当我进行API调用时,我想使用MongoDB更新2个单独的集合。官方的处理方式是使用事务,但是由于这是目前的原型,我将仅使用2个单独的函数调用来更新每个集合。
这是我在做什么:
async.waterfall([
function(callback) {
callback(null);
}, function(callback) {
connectToDatabase(MONGODB_URI)
.then(db => updateDocument1(arguments))
.then(result => {
callback(null);
});
}
, function(callback) {
connectToDatabase(MONGODB_URI)
.then(db => updateDocument2(arguments))
.then(result => {
callback(null);
});
, function(err, result) {
callback(null, null)
}
])
但是以某种方式,它不执行updateDocument2。另外,updateDocument1在过程的中间停止,因此没有文档被更新。 你知道为什么吗?还有谁知道更好的方法吗?
答案 0 :(得分:1)
异步并行:并行执行函数,而不依赖于 其他功能
异步系列:按顺序执行函数(一个接一个)
异步瀑布:首先执行函数,然后传递输出 第一个功能作为下一个功能的输入
现在就您而言:如果更新两个不依赖的集合,则可以使用异步并行