1

BreezeJS + ODataまたはWebAPIを使用して複雑なクエリを作成するにはどうすればよいですか?私ができるようにしたいのは、JayDataでこのようなもので、Northwindを参照データベースとして使用していますか?私の問題は、データベースを参照する側(定数と比較してフィールドではない)と複雑な論理ツリー(a ||(b && c))の両方を持つクエリを表現する方法がわからないことです。

context.Products.filter(function(product) {
   return (product.Unit_Price < product.Category.BudgetPriceLimit) || 
   (product.Category.IsOnSale && product.Supplier.IsFavored)
}).toArray(...)

私の他の質問は、TypeScript+クエリについてです。BreezeJSでクエリにArrow関数を使用するにはどうすればよいですか?したがって、式ビルダーの代わりに、次のように言う方法があります。

query(Product => Product.Unit_Price < Product.Category.BudgetPriceLimit)

ご協力いただきありがとうございます。明らかな質問の場合は申し訳ありません。

4

2 に答える 2

6

この投稿は、私の側の間違いと、v0の時点でそよ風に追加された新機能を修正するために編集されました。77.1。

良い質問です!

Breezeは、次のようなクロスプロパティクエリ式(v 0.77.1以降)をサポートするようになりました。

var shippedLateQuery = EntityQuery.from("Orders")
                                  .where("requiredDate",">","shippedDate");

3番目のパラメーター(上記の「shippedDate」)は、コンテキストに応じてプロパティ式またはリテラルとして扱われます。一般に、値がプロパティ式として解釈できる場合は、そうでない場合はリテラルとして扱われます。ほとんどの場合、これはうまく機能しますが、解釈を強制することもできます。詳細については、APIドキュメントをご覧ください。

複雑なクエリ、つまり(a ||(b && c))を簡単に作成するには、述語を使用します。ここにいくつかの良い例があります:

クエリの例-述語を含む複合条件のトピックを参照してください

また、ここでの最初の簡単なチュートリアル:チュートリアルでは、機能を試すこともできます(ステップ5を参照)。

Typescriptを積極的にフォローしており、完全に有効にする計画がありますが、まだプロセスの初期段階です。

更新:v 0.84.4以降、Breezeは完全なTypeScriptサポートを提供します。

于 2012-12-12T20:01:50.520 に答える
0

Breezeがフィールド間の比較をサポートするまでは、フィールド間の比較を実行できるLINQクエリを構築するカスタムクエリメソッドをサーバー側のコントローラーで作成することを検討してください。クライアントに柔軟性を与えるために、コントローラーメソッドがクエリの構築に影響を与えるために解釈するパラメーターを渡すことができます。withParameters句を使用します。ODataクエリ句とwithParameters句を組み合わせることができます。

于 2012-12-12T20:39:30.670 に答える