2016-07-03 36 views
5

用户模式:防止重复阵列条目猫鼬模式

var UserSchema = new Schema({ 

name:   { type: String, required:true }, 
email:   { type: String, required:true, lowercase: true , index : { unique: true } }, 
password :  { type: String, required:true , select:true }, 
blog_bookmarks: [{ type: String }] 

}); 

API将值添加到blog_bookmarks特定用户

api.post('/add_bookmark_blog', function(req, res){ 

User.findOne({_id: req.query.user_id}, function(err, user){ 
    if(err) 
    { 
     res.json(err) 
    } 
    else{ 
     var blogid = req.body.blog_id; 
     user.find({ blog_bookmarks : blogid}, function(res1, result){ 
      if(res1){ 
       user.blog_bookmarks.push(blogid); 
       user.save(function(err) { 
        if(err){ 
          res.json('ERROR at adding bookmark') 
         } 
        else { 
          res.json('bookmark for blog added') 
         } 
       }) 
      } 
      else{ 
       res.json('Already bookmarked') 
      } 
     }); 
    } 
    }) 
}); 

我想补充blog_idblog_bookmarks阵列只有当它不不存在,我不想多次输入。

目前,user.find()给控制台错误

user.find()是不是一个函数

如何实现的呢?

回答

5

为避免您的blog_bookmarks中出现重复值,请使用$addToSet运算符。

User.update({_id: req.query.user_id}, {$addToSet: {blog_bookmarks: blogid}}) 

user.find()给你可能是一个错误,因为它应该是User.find()与在开始时大写的U。

+1

谢谢。有效 – kRAk3N