Mongoose.js在架构中存储未知对象

时间:2015-05-07 15:58:41

标签: node.js mongodb object mongoose populate

我正在创建一种对话应用,我希望用户能够通过电子邮件和短信从任何地方继续他们的对话。现在我有一个像这样的会话模式:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var validator = require('validator');

var ConversationSchema = new Schema({
    contact: [
        { 
            type: Schema.Types.ObjectId,
            ref: 'Contact'
        }
    ],
    conversation: {

    }
});

var Conversation = mongoose.model('Conversation', ConversationSchema);

在对话对象中,我希望能够存储EmailSMS对象。我们不知道会话对象中有多少个电子邮件或多少SMS,也不知道它们到达的顺序是什么。当我查询对话时,要显示它,我想填充所有的EmailSMS个对象。

如何确保conversation可以容纳不同类型的对象,并且在请求对话时可以填充每个对象?

有没有更好的方法来实现这一目标?我可以想象填充每个对象的效率都非常低。

1 个答案:

答案 0 :(得分:0)

在您的情况下,您最好使用数组进行对话,例如:

conversation: {
    sms: [],
    email: []
}

或者,如果您为该类型添加[Schema.Types.Mixed],您将能够在其中保存任何类型的对象。