3

I've been trying get an error when running bad code. The following code tries to update a record which has _id value 5. There is actually no such record, but I can't catch any error messages with the following function.

What should I do?

collection.update(
    { _id : "5" }, 
    // { _id : req.session.User._id }, 
    { $set: { password : req.param('password') } }, 
    { writeConcern: { w: "majority", wtimeout: 3000 } },
    function(err, result) {
        if (err) { console.log(err); return err; }

        res.send("/user/show");
    }
);
Vemonus
  • 868
  • 1
  • 16
  • 28
efkan
  • 12,991
  • 6
  • 73
  • 106

1 Answers1

4

The callback of update() has 2 arguments, err and result. When the item is updated, result is set to true, false otherwise. So when the item is not updated because item is not found, it's not considered an error, so err is null. if (err) won't be true. You need to test for updated this way:

collection.update(
  { _id : "5" }, 
  // { _id : req.session.User._id }, 
  { $set: { password : req.param('password') } }, 
  { writeConcern: { w: "majority", wtimeout: 3000 } },
  function(err, result) {
    if (err) { console.log(err); res.send(err); return;}
    if (result) {
      res.send("/user/show");
    } else {
      res.send("/user/notshow");
  }
);
Ben
  • 5,024
  • 2
  • 18
  • 23