Khi gửi một yêu cầu đến /customers/41224d776a326fb40f000001
và một tài liệu với _id
41224d776a326fb40f000001
không tồn tại, doc
là null
và tôi trở lại một 404
:
Controller.prototype.show = function(id, res) {
this.model.findById(id, function(err, doc) {
if (err) {
throw err;
}
if (!doc) {
res.send(404);
}
return res.send(doc);
});
};
Tuy nhiên, khi _id
không khớp với những gì Mongoose mong đợi là "định dạng" (tôi cho là), ví dụ như với GET /customers/foo
một lỗi lạ được trả về:
CastError: Không thể truyền tới ObjectId cho giá trị "foo" tại đường dẫn "_id".
Vậy đây là lỗi gì?
_id
trong lược đồ Mongoose của mình. Trong"bla"
trường hợp bạn sử dụng kiểuString
thay vì kiểu mặc địnhObjectId
và bạn sẽ không cần thêm dấu kiểm này vì mọi thứ đều có thể được truyền thành chuỗi.