使用mongodb和rabbitmq处理任务

时间:2016-03-02 17:14:45

标签: node.js mongodb rabbitmq

我订阅了这份工作,并听取了新消息,我得到了一个像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
    });
});

所以,当我没有跑

时,mongoose返回了旧物体
ack.acknowledge(true);

1 个答案:

答案 0 :(得分:0)

致电Workers.findById(workerId, ...,它会返回您想要的内容