gpt4 book ai didi

node.js - 如何使用 GridStore 存储具有多键 ID 的文档?

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:40 25 4
gpt4 key购买 nike

我正在使用 GridStore,并且我想存储一个 Id 具有多个键的文档。

我尝试过这个:

var gridStore = new GridStore(db, {uuid: uuid, format: fileName}, 'w');

// Open the file
gridStore.open(function (err, gridStore) {
// Write some data to the file
gridStore.write(data, function (err, gridStore) {
assert.equal(null, err);

// Close (Flushes the data to MongoDB)
gridStore.close(function (err, result) {
assert.equal(null, err);

// Verify that the file exists
GridStore.exist(db, {uuid: uuid, format: fileName},
function (err, result) {
assert.equal(null, err);
assert.equal(true, result);
});
});
});
});

但由于 assert.equal(true, result); 语句而失败。

如何使用 GridStore 存储具有多键 ID 的文档?

最佳答案

您应该向 GridStore 构造函数提供一个文件名,它将起作用:

var gridStore = new GridStore(db, {uuid: uuid, format: fileName}, 'foobar', 'w');

我挖掘了 GridStore source code在GitHub上找到了这段代码(仅显示相关部分):

if(typeof mode === 'undefined') {
mode = filename;
filename = undefined;
}

if(id instanceof ObjectID) {
this.referenceBy = REFERENCE_BY_ID;
this.fileId = id;
this.filename = filename;
} else if(typeof filename == 'undefined') {
this.referenceBy = REFERENCE_BY_FILENAME;
this.filename = id;
if (mode.indexOf('w') != null) {
this.fileId = new ObjectID();
}
} else {
this.referenceBy = REFERENCE_BY_ID;
this.fileId = id;
this.filename = filename;
}

基本上,如果您不提供 filename 选项,GridStore 将按文件名引用文档,并为 _id 字段创建一个新的 ObjectId。如果您提供文件名选项,_id 将是您指定的。

您还可以通过检查 fs.files 集合并检查文件的 _id 值来验证这一点。

关于node.js - 如何使用 GridStore 存储具有多键 ID 的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24227610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com