完成所有保存操作后,猫鼬断开连接

时间:2018-10-15 13:59:14

标签: node.js mongoose

我正在循环执行保存操作。 (我不是在兑现那些诺言,也不是在等待所有保存完成) 完成所有操作后如何断开与数据库的连接?

我想做这样的事情:

enter image description here

没有足够的内存来收集那些诺言

1 个答案:

答案 0 :(得分:2)

您可以使用.disconnect()关闭与猫鼬的连接。参见https://mongoosejs.com/docs/api.html#mongoose_Mongoose-disconnect

关于在操作完成时进行跟踪-这就是承诺的目的。

确保已创建每个项目的简单方法是:

var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
const Schema = mongoose.Schema;

const schema = new Schema({
  name: Number,
});
const model = mongoose.model('test', schema);

async function run() {
  mongoose.connect(`mongodb://localhost/test`);
  for (let i = 0; i < 1000; i++) {
    await model.create({ name: i });
  }
  mongoose.disconnect();
}

run()
  .then(() => {
    console.log('completed exec');
  })
  .catch((err) => {
    console.error('Error during exec', err);
  })

这不是一个很好的实现,但是可以完成工作。 您应该注意的事情是:

  1. 您可以批量处理请求吗?例如。使用insertMany
  2. 错误处理/连续性-如果在运行过​​程中出现故障怎么办?我们应该停止还是继续,但是记录错误?