1

データベースをクエリするためのmongodbのjson dslが本当に好きです。そのようなjson式を、特定のコンテキストオブジェクトに適用できるjs関数に変換できるnode.js/browser用のスタンドアロンライブラリがあるかどうか疑問に思っていました。

これが私の言いたいことです。次の式があるとします。

{
  "context.user.age": { "$gte": 30, "$lte": 40 },
  "context.user.hobby": { "$in": ["swimming", "running"] }
}

これは js 関数に変換できます。

var f = function (context) {
  // @return {Boolean}
  return (context.user.age >= 30) &&
         (context.user.age <= 40) &&
         (['swimming', 'running'].indexOf(context.user.hobby) >= 0)
}

独自の DSL を構築しているため、これが必要です。では、この種の機能を備えたものを何か知っていますか?

4

1 に答える 1

0

質問の本文で説明されているものと同様の機能または簡単に適応できる機能を実行するライブラリが少なくとも2つあります。

  • Benjamin Arthur Lupton のquery-engine、豊富な機能
  • クレイグ・コンドンのふるい、軽量

ブール値を返す関数を生成するために、これを書きました(siftを使用):

   parseCondition = (condition) ->
        ###
            @param {Object} condition - a condition statement written in swift.
            @return {Function} - condition fn to be applied on a context
                                 which will return a Boolean.
            @see https://github.com/crcn/sift.js
        ###
        return (context) ->
            [expectedContext] = swift condition, [context]
            return expectedContext is context

コンテキスト オブジェクトを渡し、返されたオブジェクトが同じかどうかを確認しています。そうであれば、条件は渡されました。

于 2013-04-24T04:38:41.823 に答える