作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
User.find().then(function (user) {
console.log(user)
})
Category.find().then(function (category) {
console.log(err);
})
Content.find().then(function (content) {
console.log(content);
})
如何将查询语句合并为一个并得到所有结果? ps:我使用mongoose来操作mongoDb。
最佳答案
您可以将所有查询包装在 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);
})
如果您使用的是 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);
})
关于node.js - 如何将多个 Mongoose 查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426597/
我是一名优秀的程序员,十分优秀!