ユーザの入力に応じて結果をソートしたいと思います。ArangoDB - カスタム関数でaqlの結果をソート
は、私は次のようになりますsort
オブジェクトを考えてみましょう:
var sort = {createdAt: 1, name: 1}
そして、私はこのようになりますクエリがあります:
FOR f in [{createdAt: 123, name: 'BBB'},{createdAt: 2000, name: 'ZZZ'}, {createdAt: 2000, name: 'BBB'}]
SORT f.createdAt DESC
RETURN f
を
var sort = {createdAt: -1}
または、このような
それは大丈夫です。 しかし、ソートオブジェクトでユーザーによって渡されるフィールドの結果をソートしたいと思います。 私は、カスタムアランゴ機能を追加しました:db.createFunction(
'CUSTOM::FILTERING::SORT_STRING',
String(function (sort, it) {
return sort && Object.keys(sort).length !== 0 && sort.constructor === Object ? Object.keys(sort).map(key => `${it}.${key} ${sort[key] >= 0 ? 'ASC' : 'DESC'}`).join(', ') : '';
})
);
が、私はそれにそれがすべてでは動作しません。その方法を使用しています。結果は決してソートされません。
FOR f in [{createdAt: 123, name: 'BBB'},{createdAt: 2000, name: 'ZZZ'}, {createdAt: 2000, name: 'BBB'}]
SORT CUSTOM::FILTERING::SORT_STRING(${sort}, 'f')
RETURN f
異なる入力引数に基づいて結果をソートするにはどうすればよいですか?
ArangoDB内でFoxx Microservicesを見たことがありますか?これは完全なアプリケーションであり、FoxxにREST APIを提示させてから、ユーザーがSort、PageNum、PageSize、Query属性を提供できるようになり、Foxx REST APIがそれを行います。 –
@DavidThomasあなたはそれを実装するいくつかの例を教えてくれますか? – MatiK
[この回答](https://stackoverflow.com/questions/42427063/sending-http-post-request-from-node-to-foxx-service-arangodb/42451340#42451340)をご覧ください。 REST APIリクエストに応答するようにFoxxマイクロサービスを設定する方法の例。呼び出し元がパス、クエリ文字列、または本文のいずれかを使用して追加のクエリパラメータを指定し、コードで適切なクエリを呼び出すようにすることができます。 Foxx Microserviceを書く方法はこの質問の範囲を超えていますが、Node.js形式の形式に従います。オンラインでは多くの例があります。特にgithub.comにあります。 –