0

我有两个看起来像这样的模式:

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();
});
4

1 回答 1

1

您可以使用 arguments 对象将参数传递给任何函数。例如:

function argNum(){
  console.log(arguments.length);
}
argNum('test',1,23,43); // Logs 4

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments

于 2013-07-30T21:33:30.520 回答