猫鼬填充方法仅存储一个对象

时间:2020-07-23 05:00:44

标签: javascript node.js reactjs mongodb mongoose

我正在尝试访问存储在我的会话模型中的消息模型数组。但是,当我使用populate方法尝试将Message模型存储为数组时,只会显示第一个Message。

socket.on('connected', function (data) {
      //load all messages
      const filter = { roomId: data.roomid };
      (async () => {
        console.log('searching for Schema');
        let conversation = await Conversation.findOne(filter)
          .populate('messages')
          .exec(function (err, message) {
            if (err) console.log('no schema found');
            var array = message.messages;
            console.log(array);
            // printing only first Message
          });
      })();
    });

对话模式

const ConversationSchema = new mongoose.Schema(
    {
        roomId: {
            type: String,
            required: true
        },
        messages: {
            type:  mongoose.Schema.Types.ObjectId, ref: 'Message' 
        }
    },
    {
        timestamps: true
    }
);

1 个答案:

答案 0 :(得分:2)

填充方法不将消息存储为数组。填充是自动用其他集合中的文档替换文档中指定路径的过程。Refer this for more detail

要解决您的问题,请修改“对话模式”中的消息声明字段

messages: [{
            type:  mongoose.Schema.Types.ObjectId, ref: 'Message' 
        }]