gpt4 book ai didi

node.js - 如何检查集合是否已存在于 ArangoDB 中

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:06 25 4
gpt4 key购买 nike

假设我有一个集合Col1,它已经存在于我的数据库中。所以,做类似的事情:

var col = db.collection('Col1');
col.save({"name":"something"});

将工作得很好。

但是如果我的数据库中不存在的集合 Col2 被尝试使用相同的东西,即

var col = db.collection('Col2');
col.save({"name":"something"})

也可以很好地工作。只是它不存在并且不会显示在我的数据库中。如果它抛出一些错误或东西,我可以使用 trycatch 语句来获取结果。但既然那是现成的,我怎么知道集合是否已经存在?

最佳答案

这里有两件事可能令人困惑。

首先,aragojs(与 ArangoDB 的内部 JS API 不同)对于需要与实际 ArangoDB 服务器通信的所有内容都是异步的。异步函数在文档中被标记为“async”。

您可以将 node.js 样式的回调(如内置 node.js 模块中的异步函数,例如 fshttp 等)传递给这些方法。或者,您可以简单地省略回调,该方法将返回对结果的 promise 。您可以了解有关 promise 如何工作的更多信息 in Mozilla's JavaScript reference documentation (这不是 Mozilla 特有的——他们的引用非常好而且通常是正确的)。

您遇到的另一件事是 arangojs 中的集合对象与 ArangoDB 中的实际集合之间的区别。该驱动程序允许您为集合创建集合对象,无论它们是否存在。如果集合实际上不存在,当尝试使用它们时,您当然会看到错误。

var col = db.collection('whatever');
col.create() // create the collection if it doesn't exist
.catch(function () {}) // ignore any errors
.then(function () {
return col.get(); // make sure the collection exists now
})
.then(function () {
return col.save({some: 'data'});
})
.then(function (result) {
// everything went fine
})
.catch(function (e) {
console.error('Something went wrong', e.stack);
});

或者使用 async/await(如果你使用 Babel 或在一年后阅读这个答案):

var col = db.collection('whatever');
try {
await col.create(); // create the collection if it doesn't exist
} catch (e) {} // ignore any errors
try {
await col.get(); // make sure the collection exists now
const result = await col.save({some: 'data'});
// everything went fine
} catch (e) {
console.error('Something went wrong', e.stack);
}

或者使用 node.js 风格的回调,因为你是老派或者真的很喜欢金字塔:

var col = db.collection('whatever');
col.create(function () { // create the collection if it doesn't exist
// ignore any errors
col.get(function (err) { // make sure the collection exists now
if (err) {
console.error('Something went wrong', err.stack);
return;
}
col.save({some: 'data'}, function (err, result) {
if (err) {
console.error('Something went wrong', err.stack);
return;
}
// everything went fine
});
});
});

关于node.js - 如何检查集合是否已存在于 ArangoDB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40503042/

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