2015-06-15 80 views
1

我有一個名爲「用戶」和1篇文獻集中的是:如何讀取ArangoDB Foxx應用程序中的數據集合?

{ 
    "username": "test1", 
    "password": "pw1", 
    "id": "1" 
} 

我創建了一個應用程序福克斯並嘗試(使用2.6.0a3)跟隨文檔。這是我的控制器:

var Foxx = require('org/arangodb/foxx'), 
    usersCollection = applicationContext.collection("user"); 

var usersRepo = Foxx.Repository.extend({ 
    getAll: Foxx.createQuery(
     'FOR u IN user RETURN u' 
    ) 
}); 

var controller = new Foxx.Controller(applicationContext); 

controller.get('/', function (req, res) { 
    res.json(usersRepo.getAll()); 
}); 

我越來越: {"error":"undefined is not a function"},而不是記錄列表。

我錯過了什麼?

+1

您是否在文檔的某處發現上述代碼?如果是的話,你可以發佈文檔的URL,這樣的例子可以修復?謝謝! – stj

+0

它不是像上面那樣,我是從「Details on FoxxRepository」部分複製粘貼到「我的第一個Foxx應用程序」示例中的一部分,但這是我沒有實例化類的錯誤。感謝您的注意! – rollingBalls

回答

3

至於我可以看到調用Foxx.Repository.extend()沒有實例化一個可用的庫對象,但一個「原型」:

var UsersRepo = Foxx.Repository.extend({ 
    getAll: Foxx.createQuery(
     'FOR u IN user RETURN u' 
    ) 
});  

什麼似乎缺少的是一個具體的對象實例:

var usersRepo = new UsersRepo("user"); 

實例然後可以用來調用所述預定功能:

controller.get('/', function (req, res) { 
    res.json(usersRepo.getAll()); 
}); 

在上面的代碼中,我有一個名爲UsersRepo(大寫)的變量以及變量usersRepo(小寫字母)中的存儲庫對象實例中的原型。

+0

謝謝!做'新的UsersRepo'工作。有趣的是,新的Foxx.Repositoy.extend({...})不會。請問您也可以查看[this](http://pastebin.com/FqTbv7Jw)代碼段,這是否太多了?這是我從「我的第一個Foxx應用程序」示例改編而來的,我在'.all()'上得到了一個空錯誤。 – rollingBalls

+1

片段看起來不錯。但是,由於'usersCollection'顯然是'null',那麼潛在的'user'集合似乎並不存在。請注意,您的應用程序是通過'applicationContext.collection(「user」)引用集合的,它不會**引用一個名爲'users'的集合,而是指一個以應用程序安裝點爲前綴的集合,下劃線。例如,如果您的應用程序安裝在'/ foo'處,那麼集合名稱將是'foo_user'。如果你不確定,可以通過require(「console」)來顯示集合的名稱。log(applicationContext.collectionName(「user」));'。 – stj

+1

要通過絕對名稱引用集合,您也可以使用'usersCollection = require(「org/arangodb」)。db._collection(「user」);' – stj

相關問題