我对 arangodb 代码库中的 .js 文件进行了更改,并执行了 make clean && make
并重新启动了 arangod,但更改似乎并未生效。如何确保更改已激活?
更改后的文件为:js/server/modules/org/arangodb/foxx/query.js
让我想到这个想法的文档章节是 https://github.com/arangodb/arangodb/blob/40ea11ab45b80cd38a9db7b7cab09b8bcc2cd43d/Documentation/Books/Users/Foxx/FoxxRepository.mdpp#L18顺便说一句,其中没有显示如何将参数传递给查询,并且它引用了我找不到的“Foxx 查询章节”。
最终,目标不仅是将参数传递给查询,还将参数传递给调用的转换函数。差异是
diff --git a/js/server/modules/org/arangodb/foxx/query.js b/js/server/modules/org/arangodb/foxx/query.js
index 49e320c..ac37f34 100644
--- a/js/server/modules/org/arangodb/foxx/query.js
+++ b/js/server/modules/org/arangodb/foxx/query.js
@@ -61,7 +61,7 @@ exports.createQuery = function createQuery (cfg) {
throw new Error('Expected transform to be a function.');
}
- return function query(vars) {
+ return function query(vars, trArgs) {
vars = _.extend({}, defaults, vars);
if (context) {
_.each(vars, function (value, key) {
@@ -76,6 +76,6 @@ exports.createQuery = function createQuery (cfg) {
return new Model(data);
});
}
- return transform ? transform(result) : result;
+ return transform ? transform(result, trArgs:) : result;
};
-};
\ No newline at end of file
+};
存储库看起来像这样:
(function () {
"use strict";
var Foxx = require("org/arangodb/foxx");
var Pingers = Foxx.Repository.extend({
ping: Foxx.createQuery({
query: "FOR p IN pingers FILTER p._key == @id return p",
transform: function(items, args) {
var lang = args.lang;
for (var i = 0; i < items.length; i++) {
var item = items[i];
item.name = item.name[lang];
item.description = item.description[lang];
}
return items;
}
}),
exports.Repository = Pingers;
}());
Controller :
ctrl.get("/ping", function(req, res) {
var id = req.param('id');
var lang = req.param('lang');
res.json(pingers.ping({id: id}, {lang: lang}));
});
最佳答案
我应该足以重新启动服务器。 Javascript 文件未按要求预编译和加载。
线路
return transform ? transform(result, trArgs:) : result;
看起来很可疑。 trArgs 后面的“:”很奇怪。这应该会引发错误。
关于arangodb - 在arangodb代码库中重新编译JS? (试图侵入 Foxx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238708/