用户架构:
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 }]
});
为特定用户添加blog_bookmarks
值的API
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()不是函数
如何实现它?
答案 0 :(得分:5)
要避免blog_bookmarks
中的重复值,请使用$addToSet运算符。
User.update({_id: req.query.user_id}, {$addToSet: {blog_bookmarks: blogid}})
您的user.find()
可能会出错,因为它应该是User.find()
,并且在开头有一个大写字母U。