0
我認爲我的文章標題有點模糊。讓我澄清一下。MongoDB和Mongoose:可以在引用文檔創建之前使貓鼬映射引用的文檔?
我有以下模式:
var listSchema = mongoose.Schema({
_owner: { type:ObjectId, ref: 'User' },
title: String,
description: String,
creation_date: { type: Date, default: Date.now }
});
var taskSchema = mongoose.Schema({
_taskList: { type: ObjectId, ref: 'List' },
title: String,
description: String,
creation_date: { type: Date, default: Date.now }
});
var List = mongoose.model('List', listSchema);
var Task = mongoose.model('Task', taskSchema);
每個 '任務' 涉及一個 '清單'。是否可以保存一個新的'任務'引用集合中尚不存在的'List'?例如:
//assume I have a user.id
var NewList = new List({
_owner: user._id,
title: 'Test List',
description: 'List Description'
});
var NewTask = new Task({
_taskList : NewList, //ref to the document above (_id not created yet)
title: 'Task Title',
description: 'Task Description'
});
NewTask.save(function(err, task){
...
});
是這樣的可能或我需要保存列表然後保存任務?
非常感謝!
這是絕對有可能。您可以手動設置ID。但是你認爲這種方法有問題嗎? 'NewTask.save'完成後'NewList.save'失敗怎麼辦?那麼,一致性是Mongo的一個普遍問題... – freakish 2014-11-02 22:41:15
@freakish當然。我會假設如果引用的文檔save()失敗,那麼這兩個文檔都不會被保存。這是您期望在另一個環境中使用RDBMS ORM的事務行爲。所以據你所知,有必要執行兩次保存事務(以我的例子爲例)?沒關係。就是想。 – Nick 2014-11-02 22:49:17