在查找当时可能不存在的特定文档时,如何防止 ArangoDB 在事务期间引发异常?
Nodejs 将事务以一个块的形式发送到 ArangoDb 并在那里进行处理。那很完美。我想将所有数学卸载到服务器。
在交易期间,我想查看特定的集合并检查是否存在文档,如果可以找到文档,则获取字段“余额”,但如果找不到文档或其字段,那么我不想抛出异常并且不想停止正在进行的事务。相反,我更想继续进行交易,我们将变量 oldBalance 分配给字符串'0'。
(供您参考:在 nodeJS 端指定了集合的写锁:'user'),在这里您可以看到发送到 ArangoDB 的部分事务代码:
var db = require('internal').db;
// 1.) find specific document
var accountdoc = db.user.document('Johnny04'); // find doc by _key
如果找不到具有该特定 _key 的文档,则会引发异常。那时用户可能在集合中没有条目。在这种情况下,我们想假设他的余额是字符串'0'。但不幸的是,已经抛出了异常。我更想像下面这样进行:
//2.) calculate newBalance = oldBalance + additional
if (accountdoc.error==true){ // document not found etc...
var oldBalance='0';
var documentExists = false;
} else {
var oldBalance=accountdoc.balance;
var documentExists = true;
var documentExistsID = accountdoc._id;
}