Estoy tratando de obtener materiales de estudio relacionados con un tema de la colección 'material de estudio' cuando se pasa el nombre del tema de la colección 'asignatura'.
router.get('/materials',(req,res) =>{ Materials.find({"subjectName":"Physics"}).exec((err,materials) =>{ if(err){ return res.status(400).json({ error:err }); } return res.status(200).json({ success:true, existingMaterials:materials }); }); });Esto es lo que tengo hasta ahora. ¿Cómo pasar el nombre del sujeto como variable?
Hice la parte de reacción de esta manera. ¿Es esto correcto?
export default class ViewSubjectMaterial extends Component { constructor(props){ super(props); this.state={ materials:[] }; } componentDidMount(){ this.retrieveMaterials(); } retrieveMaterials(){ axios.get("http://localhost:8000/materials?subjectName=Physics").then(res =>{ if(res.data.success){ this.setState({ materials:res.data.existingMaterials }); console.log(this.state.materials) } }) }}¿Necesitas algo como esto?
router.get('/materials',(req,res) =>{ const subjectName = req.query.subjectName; Materials.find({"subjectName":subjectName}).exec((err,materials) =>{ if(err){ return res.status(400).json({ error:err }); } return res.status(200).json({ success:true, existingMaterials:materials }); }); });Luego, deberá enviar esto en la consulta de solicitud. por ejemplo:
GET http://localhost:8000/materials?subjectName=Physics
cambiar el método get to post
router.post('/materials',(req,res) =>{ /// {subjectName:"Physics",curriculum:"Intro"} example of req.body Materials.find(req.body).exec((err,materials) =>{ if(err){ return res.status(400).json({ error:err }); } return res.status(200).json({ success:true, existingMaterials:materials }); }); });agregue estas líneas en el índice js donde expresa definido
app.use(bodyParser.urlencoded()); app.use(bodyParser.json());