0

FOXX Play アプリケーション内にこのコードがあります

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

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

4

1 に答える 1

1

ドキュメントはコレクションに言及しています。Foxx リポジトリを使用しているようです。Foxx リポジトリは、同じメソッドのほとんどを提供するコレクションのラッパーですが、プレーン ドキュメント (またはカーソル) を返す代わりに、Foxx モデルで結果をラップします。

あなたの場合、おそらくFoxxモデルをまったく使用したくないようです(おそらく_revandのようないくつかの属性を削除するだけで、それらをドキュメントに変換するだけです_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 互換サービスで引き続き使用できます)。 .

于 2016-05-17T22:14:55.413 に答える