[英]How to make Mongoose throw an error when pulling an entry via findByIdAndUpdate() does not find anything in the db?
[英]Mongoose findByIdAndUpdate not pulling
我試圖從mongodb中的子文檔中提取對象。 結構如下(來自db.users.find().pretty()
):
{
"_id" : ObjectId("56a660b42819b770b89950bd"),
"userName" : "someGuy",
"itemCollection" : [
{
"item_name" : "item1",
"_id" : ObjectId("56a661232819b770b89950be")
}
],
"__v" : 13
}
這段代碼:
var userID = req.user._id;
var transactionID = req.body._id;
console.log('userID: '+userID);
console.log('transactionID: '+transactionID);
User.findByIdAndUpdate(
userID,
{$pull: {'itemCollection': {'_id': transactionID}}},{new: true}, function(err, model){
if(err){
console.log('ERROR: ' + err);
}
console.log(model);
});
得到以下輸出:
> userID: 56a660b42819b770b89950bd
> transactionID: 56a661232819b770b89950be
> { itemCollection:
[ { item_name: 'item1',
_id: 56a661232819b770b89950be } ],
__v: 13,
userName: 'someGuy',
_id: 56a660b42819b770b89950bd }
所以似乎什么也沒發生。 我已經嘗試了所有可以找到的堆棧溢出變化,但從未刪除過。 有人看到錯了嗎?
您需要將_id
從字符串轉換為ObjectID
類型:
var mongoose = require('mongoose'); var userID = mongoose.mongo.ObjectID(req.user._id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.