Mongoose 多个查询在第二次查询后返回
Posted
技术标签:
【中文标题】Mongoose 多个查询在第二次查询后返回【英文标题】:Mongoose multiple queries return after second query 【发布时间】:2021-02-16 09:56:42 【问题描述】:我正在尝试取回包含用户名和 url 属性的“图像”,但似乎第一个查询首先返回。为我的菜鸟知识道歉。
exports.getImg = (req, res) =>
Image.find(, '-__v').lean().exec((err, images) =>
if (err)
res.sendStatus(400)( 'msg': 'Something went wrong' );
for (let i = 0; i < images.length; i++)
//trying to get
User.findOne( _id: images[i].id, (err, user) =>
images[i]['username'] = user.uname;
images[i]['url'] = req.protocol + '://' + req.get('host') + '/images/' + images[i]._id;
);
// console.log(images);
// res.json(images);
)
【问题讨论】:
【参考方案1】:这是由于 .find() 函数是异步的。因为您正在循环并且还在循环中使用 .find() 所以它不会给出想要的结果。你需要使用 async/await。
exports.getImg = async (req, res) =>
Image.find(, '-__v').lean().exec(async(err, images) =>
if (err)
res.sendStatus(400)( 'msg': 'Something went wrong' );
for (let i = 0; i < images.length; i++)
//trying to get
await User.findOne( _id: images[i].id, (err, user) =>
images[i]['username'] = user.uname;
images[i]['url'] = req.protocol + '://' + req.get('host') + '/images/' + images[i]._id;
);
// console.log(images);
// res.json(images);
)
【讨论】:
您好,感谢您的帮助,但我有“语法错误:等待仅在异步函数中有效”作为错误。以上是关于Mongoose 多个查询在第二次查询后返回的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?
Firebase Firestore get() 快照在第二次查询时冻结