我确定这是一个简单的解决方法,但我一直在努力让我的头发试图让嵌套对象的语法正确。我试图用它来创建一个MongoDB文档。
Mongo文档存储两个用户之间的对话。会话中的每条消息都存储在单独的MongoDB文档中,会话文档将引用属于它的每条消息。
这里是对话架构(我认为没问题)
var ConversationSchema = new mongoose.Schema({
participants: [
{
user1: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
user2: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
},
],
started: Number,
messages: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Message"
}
]
});
这是我创建传递给MongoDB的对象的众多尝试之一。
var conv = {
participants : {
"participants.user1.id" : req.body.senderId,
"participants.user1.username" : req.body.senderName,
"participants.user2.id" : req.body.recipientId,
"participants.user2.username" : req.body.recipientName
},
created : Date.now(),
messages : [] // The message _id is pushed in later.
}
'参与者'这真是让我失望的一点。这些数据会尽可能地从客户端返回,但我无法将其传入我的var conv
。我在这里需要创建嵌套对象的正确语法是什么?
任何指导都很棒!谢谢大家!!
答案 0 :(得分:0)
修正了它!是的,这只是一个简单的语法错误:这是正确的形式,以防其他人在这里结束。
var conv = {
participants : {
"user1" : {
"id" : req.body.senderId,
"username" : req.body.senderName
},
"user2" : {
"id" : req.body.recipientId,
"username" : req.body.recipientName
}
},
created : Date.now(),
messages : [] // The message _id is pushed in later.
}
另外,专业提示:走开去洗碗。当你回到他们身边时,情况会更加清晰。