找不到mongodb数组中的_id属性

时间:2013-06-03 21:47:50

标签: mongodb mongoose

我有一个带有嵌入式注释的简单博客模式,它以mongoose

为模型
var BlogSchema = mongoose.Schema({
          ...............,
         comments:[Comment],
         visits:int  
});

var Comment = mongoose.Schema({
    name  :  { type: String }
  , img   :  { type:String }
  , date  :  { type: Date, default: Date.now }
  , text  :  String 
});


var BlogModel = mongoose.model('Blog',BlogSchema);

function addComment(bid,name,img,text,callback){

    var options = { new: false };       
    BlogModel.findOneAndUpdate({'_id':bid},{'$push':{'comments':{'name':name,'img':img,'text':text}},'$inc':{'visits':1}},options,function(err,ref){
        if(err) {
            console.log('add addComment'.red,err);
            callback(err, null);
        }else{
            console.log('add addComment  '.green+ref);                
            callback(null,ref);
        }
    })  
} 

当我在博客上发表评论时,博客中的评论数组确实附加了带有name,img和text属性的新评论。但问题是由于某种原因,日期和_id缺失。通过每条评论的_id,可以重新编辑或删除此评论,因此_id是非常必要的。

我不知道为什么日期消失了,因为在架构设计中,date默认为new Date,而_id也不应该错过,因为我没有强迫_id条目被忽略 - mongoose.Schema({_ id:false});

现在我的结果是有线的,有人看看有什么问题吗?

1 个答案:

答案 0 :(得分:1)

任何update次调用(例如findOneAndUpdate)都会绕过强制转换之外的所有Mongoose功能,例如默认值并将_id字段添加到新元素。您必须使用save样式更改才能触发。