我正在创建一种对话应用,我希望用户能够通过电子邮件和短信从任何地方继续他们的对话。现在我有一个像这样的会话模式:
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);
在对话对象中,我希望能够存储Email
或SMS
对象。我们不知道会话对象中有多少个电子邮件或多少SMS
,也不知道它们到达的顺序是什么。当我查询对话时,要显示它,我想填充所有的Email
和SMS
个对象。
如何确保conversation
可以容纳不同类型的对象,并且在请求对话时可以填充每个对象?
有没有更好的方法来实现这一目标?我可以想象填充每个对象的效率都非常低。
答案 0 :(得分:0)
在您的情况下,您最好使用数组进行对话,例如:
conversation: {
sms: [],
email: []
}
或者,如果您为该类型添加[Schema.Types.Mixed]
,您将能够在其中保存任何类型的对象。