用户架构:
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() is not a function
如何实现?
最佳答案
为避免 blog_bookmarks
中出现重复值,请使用 $addToSet运算符(operator)。
User.update({_id: req.query.user_id}, {$addToSet: {blog_bookmarks: blogid}})
您的 user.find()
可能会给您一个错误,因为它应该是 User.find()
以大写 U 开头。
https://stackoverflow.com/questions/38165736/
相关文章:
mongodb - 按 id 对 Mongo 文档进行分组,并按时间戳获取最新文档
mongodb - 选择 2 个字段并返回具有不同值的排序数组
javascript - Passport 没有保持持久的登录 session
mongodb - Docker-MongoDB 中的身份验证问题
linux - PHP升级到7后,为什么不能使用mongodb驱动?
node.js - NodeJS 崩溃 : Mongoose findById() does NOT
mongodb - 使用更新查询将文档值从字符串更改为 ObjectId
ruby-on-rails - 运行 Rails 应用程序时的 Mongo::Error::NoSe