Javascript Mongoose无法识别.all()承诺函数?
我试图使用承诺来处理mongoose对mongodb数据库的异步查询 我需要针对单个项目进行验证,然后针对mongodb中存在的项目数组进行验证 我已经尝试过回调、异步/等待,现在我正在尝试承诺。但我似乎无法让这东西运转起来 我需要确保一件事只有在另一件事完成后才会发生。我还必须构建数据库中存在和不存在的项目列表,并将其传递给下一个promise 但是,mongoose似乎不接受.all(),因为我得到以下错误:Javascript Mongoose无法识别.all()承诺函数?,javascript,arrays,mongoose,promise,Javascript,Arrays,Mongoose,Promise,我试图使用承诺来处理mongoose对mongodb数据库的异步查询 我需要针对单个项目进行验证,然后针对mongodb中存在的项目数组进行验证 我已经尝试过回调、异步/等待,现在我正在尝试承诺。但我似乎无法让这东西运转起来 我需要确保一件事只有在另一件事完成后才会发生。我还必须构建数据库中存在和不存在的项目列表,并将其传递给下一个promise 但是,mongoose似乎不接受.all(),因为我得到以下错误: TypeError: validateInputClass(...).then(.
TypeError: validateInputClass(...).then(...).all is not a function
我当前使用的路径是:
app.route('/users/enroll/:classId').put(todoList.enroll_in_class);
我通过的主体是:{“用户”:[“知识”、“ipsum”]}
这是我正在处理的代码的实现,它给了我一个错误,即.all()不是函数
function validateInputClass(inputclassId){
return Class.findOne({ classId: inputclassId}, function(err, classs) {
if(err){
throw err;
}
});
}
exports.enroll_in_class = function(req, res){
var userLogArray = req.body.users.map(function(user){
new Promise((user) => {console.log(user)});
})
if(req.body.users.length > 0){
validateInputClass(req.params.classId)
.then((response) => {
if(response){
return response;
} else {
res.json({"message":"Class does not exist"})
}
}).all((userLogArray => {
console.log("Done");
});
}
}
在过去的几个小时里,我一直把头撞在墙上。我似乎无法理解这一点Promise实例没有
.all
方法。只有承诺。所有都存在。似乎您需要更像Promise.all(userLogArray)。然后(()=>validateInputClass(…)。然后(response=>{……;console.log('done');})
;?也许吧,但我更喜欢在validateInputClass()之后执行all(),这对我来说没有意义,但你当然可以做你想做的任何事情。主要的一点是承诺没有。all
方法。因此,无论您认为somePromise.all()
会做什么,您都必须做不同的事情代码>毫无意义。阅读一些有关promise构造函数回调的内容。另外,由于在.map
回调中不返回任何内容,因此最终将得到一个未定义的数组-因此,您还需要阅读一些关于数组映射方法的内容