如何在nodejs中同步调用包含猫鼬查询的多个函数?



我想按顺序执行4个函数。每个函数的格式如下。就像创建更新删除和显示一样。我想在完成其他 3 个函数后调用显示函数。我尝试了承诺方法,但没有任何数据库调用,它正在按顺序工作。当猫鼬叫声发生时,顺序会发生变化。

function createProjects(req) {
var projects = req.body.created;
projects.forEach(function (project) {
var newProject = new ProjectSchema(project);
newProject.save(function (error, object) {
if (error) {
console.log(error)
}
console.log(object)
});
});
}

如何解决此问题?

您需要代码等到一个承诺完成,然后再使用诸如bluebird.eachasync库或下一个回调队列之类的东西来启动下一个承诺。该句子的第一部分可能听起来像是duh之类的东西,但在 node 中.js.save无论何时执行回调(使其在代码中不那么明显(,都将始终立即返回。

下面是一个示例bluebird.each我试图坚持您在示例代码中使用的代码样式。

var Promise = require('bluebird');
function createProjects(req) {
var projects = req.body.created;
return Promise.each(projects, function (project) {
return new ProjectSchema(project).save();
});
}

最新更新