2014-12-01 23 views
2

我已經對arangodb代碼庫中的.js文件進行了更改,並且做出了clean && make並重新啓動了arangod,但該更改似乎沒有被拾取。我如何確保更改已激活?在arangodb代碼庫中重新編譯JS? (試圖破解Foxx)

更改後的文件是:js/server/modules/org/arangodb/foxx/query.js


是把我帶到這個想法的文檔章https://docs.arangodb.com/Foxx/FoxxRepository.html#defining_custom_queries其中,順便說一句,沒有說明如何將參數傳遞給查詢和它引用」一章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; 
}()); 

而且控制器:

ctrl.get("/ping", function(req, res) { 
    var id = req.param('id'); 
    var lang = req.param('lang'); 
    res.json(pingers.ping({id: id}, {lang: lang})); 
}); 

回答

2

我應該足以重新啓動服務器。 Javascript文件沒有預先編譯,並根據需要加載。

return transform ? transform(result, trArgs:) : result; 

看起來很可疑。 trArgs之後的「:」很奇怪。這應該會引發錯誤。

+0

Oooh沒有看到,但錯誤沒有發生在那裏。我剛剛發現js文件沒有被拾取的問題:我使用/ etc中的系統配置來啓動服務器,並需要覆蓋'startup-directory'。 – stackmagic 2014-12-02 06:59:39