Home > database >  How to do 2 or more "FIND" (mongo) request in node in the same route?
How to do 2 or more "FIND" (mongo) request in node in the same route?

Time:04-13

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)

CodePudding user response:

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))

CodePudding user response:

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
 })
});
  • Related