我正在尝试访问存储在我的会话模型中的消息模型数组。但是,当我使用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
}
);
答案 0 :(得分:2)
填充方法不将消息存储为数组。填充是自动用其他集合中的文档替换文档中指定路径的过程。Refer this for more detail
要解决您的问题,请修改“对话模式”中的消息声明字段
messages: [{
type: mongoose.Schema.Types.ObjectId, ref: 'Message'
}]