简体   繁体   English

node.js回调异常行为

[英]node.js callback strange behavior

I face strange callback issue. 我面临奇怪的回调问题。 I expect result return something but it didn't. 我期望结果返回一些东西,但是没有。 Someone spot my mistake? 有人发现我的错误吗?

Models 楷模

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});

My Routes 我的路线

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
  })

})

I check my db, the update is actually working fine. 我检查我的数据库,更新实际上工作正常。 I do 我做

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
});

You're never calling callback in updateStatus , I don't see why it would ever be called. 您永远不会在updateStatus调用callback ,我不知道为什么会调用它。

If you want it to be called, call it. 如果要调用它,请调用它。

The findOneAndUpdate statement of updateStatus should be: updateStatusfindOneAndUpdate语句应为:

Order.findOneAndUpdate(
    {"_id": order_id},
    {$set: {order_status: order_status}},
    {new: true},
    callback
);

you must call callback in updateStatus function 您必须在updateStatus函数中调用回调

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM