目前,我使用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个,非常棒).

Node.js相关问答推荐

当建议在第二代上运行云功能时,现在是否有新的Firestore AdminClient可供使用?

CloudTasksClient在Firebase Function % s onDocumentCreated中实例化时导致错误

使用pm2启动服务器

我需要聚合两个 MongoDB 集合

发布请求不使用 Nodejs 更新 MongoDB 中的标头信息

将 null 推入管道后,node.js 可写完成未发出

我如何在 Raku 的供应中注册不同的事件?

express app.post的多个参数在Node.js中的定义是什么

我正在try 在公共目录中使用 Express.js 项目部署 Angular 静态构建

Typescript 条件语句不过滤值?

使用 NPM 三个 mocha+typescript 进行测试

处理 UTC 日期和future

将 AllowDiskUse true 添加到 node.js 中的 MongoDB 聚合?

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

Sharp JS 依赖关系 destruct 了 Elastic Beanstalk 上的 Express Server

带有 node.js 和 express 的基本网络服务器,用于提供 html 文件和assets资源

安全沙箱并执行用户提交的 JavaScript?

node.js 中存储的模块变量在什么范围内?

路由后的 Node Express 4 中间件

yarn 和 npm 的主要区别是什么?