Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Mongoose按顺序创建文档_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 使用Mongoose按顺序创建文档

Node.js 使用Mongoose按顺序创建文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我们有一个模型看起来像 const NodeSchema = new Mongoose.Schema({ title: { type: String, default: ''}, order: { type: Number, min: 0, required: true }, parentId: { type: String, ref: 'Node', default: null }, }); Mongoose.model('Node', NodeSchema); 我

我们有一个模型看起来像

const NodeSchema = new Mongoose.Schema({
    title: { type: String, default: ''},
    order: { type: Number, min: 0, required: true },
    parentId: { type: String, ref: 'Node', default: null },
});

Mongoose.model('Node', NodeSchema);
我们使用Mongoose验证规则验证
parentId
是否指向先前添加的文档。这些装置都在一个JSON文件中,并对其进行排序,以便在其父节点之前不添加任何节点

然后,我们使用以下方法加载装置:

const fixtures = JSON.parse(Fs.readFileSync(file), 'utf8');
model.create(fixtures, next);
我们的问题是,夹具的加载顺序与文件中的顺序不同,验证失败


除了一个接一个地添加装置(这会导致非常难看的异步代码,即使使用async和Bluebird时也是如此),还有没有办法让Mongoose按顺序添加装置?

您是否尝试过
insertMany
而不是
create
来插入文档?关键是这实际上是一个“单次调用”到实际代理“多个”
.insert()
调用的数据库,这些调用可以按任何顺序完成
.insertMany()
实际上有一个可选的“ordered”参数,用于控制“server”是按顺序还是并行应用操作,这将产生一种效果,即在指定的
false
位置不维护顺序,但默认值为
true
。我刚刚尝试了
insertMany()
,遇到了同样的问题,验证失败,因为文档没有按正确的顺序插入。它是一个不同的文档,每次都会失败,因此它们肯定是以随机顺序或同时插入的。在Mongoose文档中,它说
ordered
选项来自,它说如果一次插入失败,它就不会继续插入。您是否尝试过
insertMany
而不是
create
来插入文档?关键是这实际上是一个“单次调用”到实际代理“多个”
.insert()
调用的数据库,这些调用可以按任何顺序完成
.insertMany()
实际上有一个可选的“ordered”参数,用于控制“server”是按顺序还是并行应用操作,这将产生一种效果,即在指定的
false
位置不维护顺序,但默认值为
true
。我刚刚尝试了
insertMany()
,遇到了同样的问题,验证失败,因为文档没有按正确的顺序插入。它是一个不同的文档,每次都会失败,因此它们肯定是以随机顺序或同时插入的。在Mongoose文档中,它说,
ordered
选项来自,如果一次插入失败,它就不会继续插入。