【问题标题】:handle tasks with mongodb and rabbitmq用 mongodb 和 rabbitmq 处理任务
【发布时间】:2016-03-02 17:14:44
【问题描述】:

我订阅了这份工作,并收听了新消息,我得到了一个类似于 MongoDB 的 ObjectId 的 ID。 当我使用本机 MongoDB 驱动程序时,一切正常,但是当我尝试使用 Mongoose 时出现此错误:findOne 方法从队列中返回了先前的值。

我尝试了什么:

q.subscribe((message, headers, deliveryInfo, ack) => {
    const workerId = message.workerId; // everytime changed, it`s ok!
    MongoClient.connect(url, (err, db) => {
      const collection = db.collection('workers');
      collection.findOne({_id: workerId}, (err, item) => {
        logger.info('native ', item); // return actual data by id
      });
    });

    Workers.findOne(workerId, (err, item) => {
      logger.info('mongoose ', item); // return previos value! why??? workerId changed it other values, because it another job
    });
});

所以,猫鼬在我没有运行时返回了旧对象

ack.acknowledge(true);

【问题讨论】:

    标签: node.js mongodb rabbitmq


    【解决方案1】:

    调用Workers.findById(workerId, ...,它会返回你想要的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 2013-01-12
      • 2017-12-25
      • 2020-05-28
      相关资源
      最近更新 更多