在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.