我有两个看起来像这样的模式:
var ToolBoxSchema = new Schema({
description: String,
tools: [{type: ObjectId, ref: 'Tool'}]
});
var Tool = new Schema({
name: String,
model: String,
});
假设我有一个新的ToolBox
,它有一组Tools
. 我有一个数组Tools
并且想使用 mongoose 的 create 方法来保存这些工具,然后为每个工具添加对 ToolBox.tools 数组的引用。
var toolBoxModel = mongoose.model('ToolBox', ToolBoxSchema);
var toolModel = mongoose.model('Tool', ToolSchema);
var toolbox = new toolBoxModel();
var tool = new toolModel();
var toolsArray = getTools();
假设 getTools() 返回一个包含 X 个元素的工具数组。例如:[{name: "screwdriver", model: "craftman 3000"}, {name: "drill", model: "black and decker"}]
当我调用模型的 create 方法时,如何获取所有已保存文档的列表?
mongoose api docs中的示例显示每个保存的文档作为参数传递给回调函数,但是如果数组中的元素数量每次都不同,那么我不知道如何获取所有保存的id数组中的元素。
var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
if (err) // ...
});
有没有办法取回所有已保存文档的数组...可能是这样的:
var toolsArray = [{name: "screwdriver", model: "craftman 3000"}, {name: "drill", model: "black and decker"}];
tool.create(toolsArray, function (err, arrayOfToolDocs) {
if (err) {
throw err;
}
for (var i = 0; i < arrayOfToolDocs.length; i++) {
toolbox.tools.push(arrayOfToolDocs[i].id);
}
toolbox.save();
});