猫鼬只保存对象_id值的数组

时间:2018-09-30 07:33:11

标签: node.js mongoose

我试图将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
});

JSON data in postman

When I run GET I only get back the messages objectID values

1 个答案:

答案 0 :(得分:0)

这是设计使然。您可以通过以下方式在GroupSchemaMessageSchema之间进行交叉引用:

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

这意味着GroupSchema/messages包含与您的Messages集合交叉引用的消息的ObjectId。

您需要使用populate来加载实际的文档。

  

ref 选项告诉Mongoose在使用过程中使用哪种模型   人口。