4

我想用 ArangoDB 做 ACID 交易。我想将事务代码(nodejs-code)发送到 ArangoDB 服务器,然后它将在该服务器上执行,并希望在失败时提交或回滚。但是在 ArangoDB 服务器端,我需要安装 NPM Decimal 模块或调用包。

如何安装它,以及如何从其中的事务代码访问该特定模块?

问候和感谢。

4

2 回答 2

3

stj 已经回答了问题的交易部分。关于安装 NPM 模块。

切换到文件夹

/usr/share/arangodb/js/common/node

并执行

npm install decimal

这应该为服务器 (arangod) 和 shell (arangosh) 安装 NODE 模块。

于 2014-05-29T07:55:42.053 回答
3

一旦您在正确的位置拥有十进制模块并且您可以在 arangod 中正确地要求它,您应该能够在这样的事务中使用它:

db._executeTransaction({ 
  collections: { }, 
  action: function (params) { 
    var Decimal = require("decimal"); 
    return Decimal(params.foo).add(params.bar).toNumber(); 
  }, 
  params: { 
    foo: '1.1', 
    bar: '2.2' 
  } 
});

如果您的事务需要访问集合,您显然需要在“集合”属性中指定它们的名称,例如

db._executeTransaction({ 
  collections: { 
    write: [ "test" ]
  }, 
  action: function (params) { 
    var Decimal = require("decimal");
    var collection = require("org/arangodb").db.test;
    var amount = Decimal(params.foo).add(params.bar).toNumber(); 

    return collection.save({ _key: params.key, amount: amount }); 
  }, 
  params: { 
    key: "mykey",
    foo: '1.1', 
    bar: '2.2' 
  } 
});
于 2014-05-28T22:10:43.247 回答