我有一个问题,但我不知道如何解决这个问题。
我正在使用环回,但我想我迟早会在 mongodb 中遇到同样的问题。让我解释一下我在做什么:
- 我从另一个 REST 服务获取条目,然后为我的 API 响应准备条目(条目尚未准备好,因为它们没有来自我的数据库的 id)
- 在我发送响应之前,我想检查数据库中是否存在条目,如果不存在:
- 如果有,则创建它(由 source_id 确定):
- 使用它并将其更新到新版本
- 发送带有条目的响应(条目现在具有分配给它们的数据库 ID)
这似乎没问题,并且易于实施,但据我所知还不是。我将尝试在代码中进一步解释:
//This will not work since there are many async call, and fixedResults will be empty at the end
var fixedResults = [];
//results is array of entries
results.forEach(function(item) {
Entry.findOne({where: {source_id: item.source_id}}, functioN(err, res) {
//Did we find it in database?
if(res === null) {
//Create object, another async call here
fixedResults.push(newObj);
} else {
//Update object, another async call here
fixedResults.push(updatedObj);
}
});
});
callback(null, fixedResults);
注意:我遗漏了一些代码,但如果你通读它,我认为它是不言自明的。
所以我想遍历所有对象,在数据库中创建或更新它们,然后当所有对象都被更新/创建时,使用它们。我该怎么做?