collection.all (). limit (n) не работает в FOXX

У меня есть этот код в моем игровом приложении 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();
  }));
});

Согласно документам, я должен иметь возможность использовать разбиение на страницы здесь - я хочу ограничить результаты поиска заданным параметром 'limit', но это дает мне ошибку

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

https://docs.arangodb.com/SimpleQueries/Pagination.html


person Andreas Jung    schedule 16.05.2016    source источник


Ответы (1)


Документация относится к коллекциям. Похоже, вы используете репозиторий Foxx. Репозитории Foxx - это оболочки для коллекций, которые предоставляют большинство тех же методов, но вместо возврата простых документов (или курсоров) они заключают результаты в модели 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-совместимых сервисах, если вам нужно) .

person Alan Plum    schedule 17.05.2016