异步mongodb查询问题

时间:2019-03-02 17:57:04

标签: node.js mongodb

我试图遍历一个数组并查找分配给每个人的票证数量。

不幸的是,由于它的异步特性,我注意到我的@typeName获得了相同的值,但顺序却不同。

某些查询可能需要很长时间,因此首先插入完成的查询会插入,因此我的数组具有相同的值,但顺序不同。现在,我想避免这种情况,因此一旦查询完成,就只能从数组中拾取下一个值并将其推送到数据库中进行搜索。如何修改现有代码。

taskcount

1 个答案:

答案 0 :(得分:0)

您可以使用旨在处理此类情况的async模块。 我已经更新了以下代码

    var async = require('async');

exports.find_task_count = function (callback) {

  var names = ['Evan', 'Surajit', 'Isis', 'Millie', 'Sharon', 'Phoebe', 'Angel', 'Serah'];

  async.map(names, function (name, iterateeCallback) {
    _tasks.find({ 'assignee': name }, function (err, tickets) {
      if (err) {
        return iterateeCallback(err);
      }

      return iterateeCallback(null, tickets.length);
    });
  }, function (error, results) {
    if (error) {
      return callback(error);
    }

    return callback(null, results);
  });
}

根据async

的文档
  

请注意,由于此函数并行地将iteratee应用于每个项目,因此不能保证iteratee函数将按顺序完成。但是,结果数组的顺序与原始coll的顺序相同。

如果您仍要连续处理数组,请在上面的代码中使用mapSeries代替map