如何将多个猫鼬查询合并为一个

Jol*_*hen 3 mongoose node.js

User.find().then(function (user) {
    console.log(user)
})
Category.find().then(function (category) {
    console.log(err);
})
Content.find().then(function (content) {
    console.log(content);
})
Run Code Online (Sandbox Code Playgroud)

如何将查询语句合并为一个并获得所有结果?ps:我用猫鼬来操作mongoDb。

Cam*_*ler 5

您可以将所有查询包装在Promise.all()中以获得所需的结果。传递给Promise.all()的查询将同时执行。查看下面的代码。

Promise.all([
  User.find(),
  Category.find(),
  Content.find()
])
.then(results=>{

  //results return an array

  const [users,categories,content] = results;

  console.log("users",users);
  console.log("categories",categories);
  console.log("contents",content);

})
.catch(err=>{
  console.error("Something went wrong",err);
})
Run Code Online (Sandbox Code Playgroud)

如果您使用的是bluebird库,则可以使用Promise.props(),它基本上允许您传递对象而不是数组。

 Promise.props({
    users:User.find(),
    categories : Category.find(),
    content : Content.find()
}).then(result=>{

    console.log("users",result.users);
    console.log("categories",result.categories);
    console.log("contents",result.content);

}).catch(err=>{
    console.error("Something went wrong",err);
})
Run Code Online (Sandbox Code Playgroud)