猫鼬查询流在完成流数据之前已关闭

时间:2020-06-22 21:51:46

标签: node.js mongodb mongoose

我使用流来获取mongoDB收集机中的所有数据:

module.exports.machineStream = () => models.machines.find().lean().cursor();

然后我处理这些数据并写入另一个集合:

let writeCount = 0;

async function updateHistory(doc) {
  ...
  writeCount++;
  console.log(`writeCount: ${writeCount}`);
  await mongo.updateTrackerRecord();
}

async function processStream() {
  let readCount = 0;
  console.log(`${(new Date().toLocaleString('en-US', { timeZone: 'America/Toronto' })).toString()}: price-tracker: start updating price tracker`);
  const stream = mongo.machineStream();
  stream.on('data', async (doc) => {
    readCount++;
    console.log(`readCount: ${readCount}`);
    stream.pause();
    await updateHistory(doc);
    stream.resume();
  }).on('error', (err) => {
    console.log(err);
    sentry.captureException(err);
  }).on('close', () => {
    console.log(`${(new Date().toLocaleString('en-US', { timeZone: 'America/Toronto' })).toString()}: price-tracker: 1 end updating price tracker`);
  });
}

以下输出显示在完成读取流之前已接收到流关闭消息(数据总数为4746):

readCount: 4726
writeCount: 4726
readCount: 4727
writeCount: 4727
readCount: 4728
writeCount: 4728
readCount: 4729
writeCount: 4729
readCount: 4730
writeCount: 4730
readCount: 4731
6/22/2020, 4:42:59 PM: price-tracker: 1 end updating price tracker
writeCount: 4731
readCount: 4732
writeCount: 4732
readCount: 4733
writeCount: 4733
readCount: 4734
writeCount: 4734
readCount: 4735
writeCount: 4735
readCount: 4736
writeCount: 4736
readCount: 4737
writeCount: 4737
readCount: 4738
writeCount: 4738
readCount: 4739
writeCount: 4739
readCount: 4740
writeCount: 4740
readCount: 4741
writeCount: 4741
readCount: 4742
writeCount: 4742
readCount: 4743
writeCount: 4743
readCount: 4744
writeCount: 4744
readCount: 4745
writeCount: 4745
readCount: 4746
writeCount: 4746

我的问题是:

  1. 为什么会这样?
  2. 我想在所有读/写操作完成后关闭mongoDB连接,该怎么办?

0 个答案:

没有答案
相关问题