我试图将messages数组发布到mongoose数据库中,但是它只保存_id属性,而不是content和sender属性。我在做什么错了?
组架构:
var GroupSchema = new mongoose.Schema({
name: {
type: String,
required: true,
minlenght: 1,
trim: true
},
messages: {
type: [{type: Schema.ObjectId, ref: 'Message'}]
},
_creator: {
type: mongoose.Schema.Types.ObjectId,
required: true
}
});
消息架构:
var MessageSchema = new mongoose.Schema({
content: {
type: String,
required: true,
minlenght: 1,
trim: true
},
sender: {
type: String,
required: true
}
});
开机自检/房间路由而不保存
const messages = [];
for (const m of req.body.messages) {
messages.push(new Message(m));
}
var group = new Group({
name: req.body.name,
_creator: req.user._id,
messages: messages
});
答案 0 :(得分:0)
这是设计使然。您可以通过以下方式在GroupSchema
和MessageSchema
之间进行交叉引用:
messages: {
type: [{type: Schema.ObjectId, ref: 'Message'}]
}
这意味着GroupSchema/messages
将仅包含与您的Messages集合交叉引用的消息的ObjectId。
您需要使用populate来加载实际的文档。
ref 选项告诉Mongoose在使用过程中使用哪种模型 人口。