0
在我的項目插入對象我有一個消息模型,看起來像這樣:MongoDB中到現場,可以參考兩個不同的對象
var MessageSchema = new Schema({
fromId: {
type: entityId,
required: true
},
toId: {
type: entityId,
required: true
},
important: {
type: Boolean,
required: false
},
lessonId: {
type: Schema.Types.ObjectId,
ref: Models.Lesson,
required: false
},
memberId: {
type: Schema.Types.ObjectId,
ref: Models.Lesson,
required: false
},
message: {
type: String,
required: true
}});
只要可以將消息發送和接收通過用戶和學校我創建了一個複合型「ENTITYID」,看起來像這樣:
var entityId = {
id: {
type: Schema.Types.ObjectId,
required: true
},
entityName: {
type: String,
required: true,
enum: entityTypeList.array
}};
,我把這個作爲領域fromId和TOID我MessageSchema一個「類型」(如上圖所示)。現在,當我嘗試插入實體,如一個:
sampleMessage1: {
_id:"560e9504cac9a42f0e415bca",
memberId: "5631f6883ad9bc561889f006",
deleted:true,
fromId:
{
entityName:"school",
id:"55d1e957daea17d3e90a3c51"
},
toId:
{
entityName:"user",
id:"569b89bb90d3ccd06d96644b"
},
important:false,
message:"Sample message.",
messageType:"notification",
read:true,
timestamp:"2015-07-31T16:11:32.714Z"
}
使用「schema.create」,在「ID」字段,數據庫都在fromId和風溼,代替的ObjectId我得到的字符串。我知道我可以做這樣的事情:
id: new ObjectId(55d1e957daea17d3e90a3c51")
,但我不知道是否有其他解決方案,我沒有改變我的樣本信息,我可以做一些事情我發現不使用任何「裁判:」?
我正在使用schema.create。我試過message.insert()和message.save(),但它也不起作用。如果字段可以引用來自兩種不同模式的文檔,我可以跳過'ref'屬性嗎? –
我不確定。我知道你可以打電話填充並明確設置模型。 .populate({path:'fromId.id',model:fromId.entityName}); 也許這可以幫助嗎? –