skip to Main Content

I´m new to Node, Mongo and ReactJS, and I´m trying to show all the documents in my collections in the same page. But I don´t know how to call the FIND methods and which what route use, because it has to be shown in the same page. This is the code I have so far.

app.get("/home",(req,res)=>{
 JobModel.find({},(err,result)=>{
    if(err){
        res.json(err);
    }else{
        res.json(result);
    }
 });
});

app.get("/home",(req,res)=>{
 SchoolModel.find({},(err,result)=>{
    if(err){
        res.json(err);
    }else{
        res.json(result);
    }
 });
});

Also, like the information from the schools and jobs are almost the same (except for the name, they both have date and desciption, just the name attribute changes) the information of the jobs are duplicated but with diferent style and with no name shown(because I changed the style between them to identificate them)

2

Answers


  1. There may be many approache that you have, I think a simple one is to use promise.all function in node.js

    const promise1 = JobModel.find({}).exec();
    const promise2 = SchoolModel.find({}).exec();
    Promise.all([promise1, promise2]).then(values => 
       {
      console.log(values[0]) // job docs
      console.log(values[1]) // school docs
      res.json(values)
      }
    ).catch(err => console.error(err))
    
    Login or Signup to reply.
  2. You can also use the new async syntax to solve.
    Your code would be like this.

    app.get("/home", async (req, res) => {
     const jobData = await JobModel.find().exec();
     const schoolData = await SchoolModel.find().exec();
    
     res.json({
      jobData,
      schoolData
     })
    });
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search