node.js回调奇怪的行为

时间:2016-05-21 10:56:57

标签: javascript node.js mongodb

我面临奇怪的回调问题。我希望结果会有所回报,但事实并非如此。有人发现了我的错误吗?

模型

module.exports.updateStatus = function(updateObj, callback){
    var order_id = updateObj.order_id,
    order_status = updateObj.order_status;
    Order.findOneAndUpdate({"_id": order_id}, {$set: {order_status: order_status}},{new: true});

我的路线

var Orders = require('../models/orders');
router.post('/update_status',function(req,res,next){
  var updateObj = {
    'order_status':req.body.order_status,
    'order_id':req.body.order_id
  }
  Orders.updateStatus(updateObj,function(err,result){
    console.log(result) // nothing been return here
  })

})

我检查了我的数据库,更新实际上工作正常。我做了

module.exports.updateStatus = function(updateObj, callback){
        var order_id = updateObj.order_id,
        order_status = updateObj.order_status;
        Order.findOneAndUpdate({"_id": order_id}, {$set: {order_status: order_status}},{new: true},function(err,result){
console.log(result)// it work here
});

2 个答案:

答案 0 :(得分:2)

你永远不会在callback中致电updateStatus,我不明白为什么会被召唤。

如果您想要调用它,请将其调用。

findOneAndUpdate的{​​{1}}声明应为:

updateStatus

答案 1 :(得分:0)

你必须在updateStatus函数中调用回调

exports.updateStatus = function (updateObj, callback) {
    Order.findOneAndUpdate(
        {"_id": updateObj.order_id},
        {$set: {order_status: updateObj.order_status}},
        {new: true},
        callback
    );
}