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