ArangoDB collection.all().limit(n)在FOXX中不工作

h4cxqtbf  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(149)

我有这个代码在我的FOXX播放应用程序

var geodata = new Geodata(
  applicationContext.collection('geodata'),
  {model: Geodatum}
);

/** Lists of all geodata.
 *
 * This function simply returns the list of all Geodatum.
 */
controller.get('/', function (req, res) {
  var parameters = req.parameters;
  var limit = parameters['limit'];
  var result = geodata.all().limit(10);
  if (limit != "undefined") {
    result = result.slice(0, limit);
  }
  res.json(_.map(result, function (model) {
    return model.forClient();
  }));
});

根据文档,我应该能够在这里使用分页-我想限制给定的'限制'参数的搜索结果,但这给了我一个错误

2016-05-16T14:17:58Z [6354] ERROR TypeError: geodata.all(...).limit is not a function
e0uiprwp

e0uiprwp1#

更新:Simple Queries接口已经过时了,应该使用更强大的AQL查询语言。

文档涉及集合。您似乎正在使用Foxx存储库。Foxx存储库是集合的 Package 器,提供了大多数相同的方法,但不是返回纯文档(或游标),而是将结果 Package 在Foxx模型中。
在你的例子中,看起来你可能根本不想使用Foxx模型(你只是把它们转换回文档,可能只是删除了一些属性,比如_rev_id),所以你可以完全放弃仓库,直接使用你传入的集合:

var geodata = applicationContext.collection('geodata');

/** Lists of all geodata.
 *
 * This function simply returns the list of all Geodatum.
 */
controller.get('/', function (req, res) {
  var parameters = req.parameters;
  var limit = parameters['limit'];
  var result = geodata.all().limit(10);
  if (limit != "undefined") {
    result = result.slice(0, limit);
  }
  res.json(_.map(result, function (doc) {
    return _.omit(doc, ['_id', '_rev']);
  }));
});

您不是第一个被存储库和集合之间的区别所迷惑的人,这就是为什么存储库和模型将在即将到来的3.0版本中消失(但如果需要,您仍然可以在遗留的2.8兼容服务中使用它们)。

相关问题