0

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

2 Answers 2

2

You’re never calling callback in updateStatus, I don’t see why it would ever be called.

If you want it to be called, call it.

The findOneAndUpdate statement of updateStatus should be:

Order.findOneAndUpdate(
    {"_id": order_id},
    {$set: {order_status: order_status}},
    {new: true},
    callback
);
Sign up to request clarification or add additional context in comments.

1 Comment

aw what a careless mistake!
0

you must call callback in updateStatus function

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.