我想使用节点js在mongoDB中的子文档中添加一个值。 架构是:
contacts[contacts.length] = add1;
我希望一个用户将评论添加到其他用户的图片。 我现在使用的方法是:
var commentSchema = new Schema({
author:String,
data:String,
postedAt:Date
});
var likeSchema = new Schema({
likedBy:{
type:Array,
default:[""]
},
numOfLikes:{
type:Number,
default:0
}
});
var picSchema = new Schema({
url:String,
likes:[likeSchema],
comments:[commentSchema]
});
var statusSchema = new Schema({
data:String,
likes:[likeSchema],
comments:[commentSchema]
});
var profileSchema = new Schema({
username:String,
password:String,
DOB :Date,
sex: String,
Address:String,
pic:[picSchema],
Status:[statusSchema]
});
这里我得到的错误是:不能使用pic.comments的部分图片来遍历。
当我使用update语句时:
profile.update({"username":recepient,"pic._id":id},{$set:{"pic.comments":{"author":user,"data":comment,"postedAt":new Date()}}}},function(err,data){
if (err){
throw err;
}else{
console.log(data);
res.status(200).json({status:"Added successfully"});
}
我没有收到任何错误,但是没有添加该值。
更新语句或架构是否有错误?
答案 0 :(得分:0)
个人资料 有 [Pic] , Pic [评论] ,如果您想要"pic._id":id
更新 图片 ,那么您应该查询Pic模型,而不是配置文件。 SubDocuments有点像sql表
pic.update({ // update Pic model, not Profile
"pic._id": id // removed "username":recepient as you already have picId
}, {
$set: {
"comments": {
"author": user,
"data":comment,
"postedAt":new Date()
}
}
}, function(err,data){
if (err){
throw err;
console.log(data);
res.status(200).json({status:"Added successfully"});
}