如何从ArangoDB Foxx应用程序中的集合中读取数据?

时间:2015-06-15 21:47:18

标签: arangodb foxx

我有一个名为'user'的集合,其中包含1个文档:

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

我创建了一个Foxx应用程序,并尝试按照文档(使用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 个答案:

答案 0 :(得分:3)

据我所知,对Foxx.Repository.extend()的调用不会实现可用的Repository对象,而是“原型”:

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的变量(大写 U )中的原型和变量usersRepo中的存储库对象实例(lower-案例 u )。