1

我有一个名为“用户”的集合和其中的 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"}而不是记录列表。

我错过了什么?

4

1 回答 1

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(大写UusersRepo )的变量中的原型和一个变量(小写u )中的存储库对象实例。

于 2015-06-16T06:56:18.327 回答