从嵌套对象创建MongoDB文档

时间:2016-10-08 13:35:26

标签: javascript mongodb mongoose nested

我确定这是一个简单的解决方法,但我一直在努力让我的头发试图让嵌套对象的语法正确。我试图用它来创建一个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。我在这里需要创建嵌套对象的正确语法是什么?

任何指导都很棒!谢谢大家!!

1 个答案:

答案 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.
            }

另外,专业提示:走开去洗碗。当你回到他们身边时,情况会更加清晰。