我需要你帮助一个简单的"问题,但承诺再次成为我的错误......
这不是我的代码的例子。
// In a middleware, i have a mongoose request
Request
.find({ user: req.user.email })
.then(function (allDatasets) {
allDatasets.forEach(function (oneDataset) {
if (oneDataset.use_case == reqParams.use_case) {
res.status(400).json({
'msg': 'My response'
})
}
})
})
// And my code continue...
我想如果条件为真,则节点返回此响应并停止代码!但是.. Node是异步的,当我的循环运行时,执行下面的代码。
我试着将下面的代码放在.then()中,但它不会等待循环结束继续执行代码......
感谢您的帮助
答案 0 :(得分:2)
我认为你真正想要的是
Request.find({ user: req.user.email })
.then(function (allDatasets) {
if (allDatasets.some(oneDataset => oneDataset.use_case == reqParams.use_case)) {
res.status(400).json({
'msg': 'My response'
})
} else {
// And my code continue...
}
});
答案 1 :(得分:0)
最好的方法是,您可以使用异步功能 const allDatasets = await Request.find({user:req.user.email});
allDatasets.forEach(function (oneDataset) {
if (oneDataset.use_case == reqParams.use_case) {
res.status(400).json({
'msg': 'My response'
})
}
})
//you can continue your code here