在Mongoose模式中防止数组中的重复条目

用户架构:

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_id添加到blog_bookmarks数组中,如果它不存在,我不需要多个条目。

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

user.find()不是一个函数

如何实现它?

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

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

你的user.find()给你提供了一个错误,因为它应该是User.find() ,并且在开头是大写User.find() U.