目前,我使用save添加了一个文档.假设我有一个文档数组,希望将其存储为单个对象.有没有一种方法可以通过一个函数调用将它们全部添加到一起,然后在完成后得到一个回调?我可以单独添加所有文档,但管理回调以确定何时完成所有操作会有问题.
目前,我使用save添加了一个文档.假设我有一个文档数组,希望将其存储为单个对象.有没有一种方法可以通过一个函数调用将它们全部添加到一起,然后在完成后得到一个回调?我可以单独添加所有文档,但管理回调以确定何时完成所有操作会有问题.
Mongoose尚未实现批量插入(参见issue #723).
既然你知道要保存的文档数量,你可以这样写:
var total = docArray.length
, result = []
;
function saveAll(){
var doc = docArray.pop();
doc.save(function(err, saved){
if (err) throw err;//handle error
result.push(saved[0]);
if (--total) saveAll();
else // all saved here
})
}
saveAll();
当然,这是一个权宜之计,我建议使用某种流量控制库(我使用q个,非常棒).