5

サーバーからデータを照会するためにそよ風を使用していますが、問題が発生しているようです。このデータをフィルタリングして大文字と小文字を区別しない、またはフィールドの値を小文字にする方法はありますか? 例:

var term = "john"; 
query = query.where("Name", "contains", Term);

私が抱えている問題は、「名前」フィールドに大文字の「J」のジョンが含まれている場合です。false を返しますが、用語を「ジョン」に変更すると true を返します。これは大文字と小文字の問題であることはわかっていますが、風に大文字と小文字を無視させるにはどうすればよいですか? jquery.each を使用せずに。

ありがとう。どんな助けでも大歓迎です。

4

3 に答える 3

3

わかりました、これには 2 つの部分があります。Breeze は、すべての localQuery に使用される LocalQueryComparisonOptions オブジェクトをサポートしています。

    var lqco = new breeze.LocalQueryComparisonOptions({
        name: "custom comparison options",
        isCaseSensitive: false,
        usesSql92CompliantStringComparison: true
    });
    // either apply it globally
    lqco.setAsDefault();
    // or to a specific MetadataStore
    var ms = new breeze.MetadataStore({ localQueryComparisonOptions: lqco });
    var em = new breeze.EntityManager( { metadataStore: ms });

これは、アプリケーションの開始時に一度設定する必要があります。この例では、この時点以降に実行されるすべての localQueries は大文字と小文字を区別しません。

問題は、データベースがこれらの設定に「一致」するようにも設定されていない限り (実行はデータベース ベンダーによって異なります)、サーバーに対するリモート クエリが異なる結果を返し、同じクエリがローカルに適用されることです。

基本的に、Breeze は「サーバー」側の実装を設定できないため、通常はサーバー側のデータベース設定に一致する localQueryComparisons オブジェクトを作成することをお勧めします。

これが理にかなっていることを願っています。

于 2013-11-15T00:43:14.940 に答える
1

Oracle DB でこの問題が発生した場合は、Jay Traband から上記のコードを追加し、DB ユーザーのセッション変数を変更するようにログオン トリガーを変更しました。次の値を設定します。

ALTER SESSION SET nls_comp = 言語; ALTER SESSION SET nls_sort = binary_ci

これが誰かを助けることを願っています。ブリーズ大好き!!!

于 2013-11-15T18:52:57.740 に答える