我想用 ArangoDB 做 ACID 交易。我想将事务代码(nodejs-code)发送到 ArangoDB 服务器,然后它将在该服务器上执行,并希望在失败时提交或回滚。但是在 ArangoDB 服务器端,我需要安装 NPM Decimal 模块或调用包。
如何安装它,以及如何从其中的事务代码访问该特定模块?
问候和感谢。
stj 已经回答了问题的交易部分。关于安装 NPM 模块。
切换到文件夹
/usr/share/arangodb/js/common/node
并执行
npm install decimal
这应该为服务器 (arangod) 和 shell (arangosh) 安装 NODE 模块。
一旦您在正确的位置拥有十进制模块并且您可以在 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'
}
});