問題タブ [breeze]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - executeQueryLocally エラー
Breeze の最新バージョンでは、executeQueryLocally が壊れているようです。例えば:
私が遭遇している問題は、 のstringEquals
通話にありgetPredicateFn
ます。
上記の単純なクエリの場合、trim()
が id で呼び出されているため、
5にはメソッド「トリム」がありません
例外。
次に Breeze の stringEquals 関数を示します。
編集
id
は Items モデルで定義されint
、 では数値ですJavaScript
。Breeze の以前のバージョンではstringEqual
s が実行されなかったため、数値のトリミングは行われませんでした。
asp.net-mvc - 複数のモデルと Breeze コンテキストでのメタデータの問題
複数の EF モデルに対して複数の Api コントローラーを使用するソリューションで、Breeze.js のサーバー側コンポーネントを使用しようとした人はいますか?
1 つのコンテキストで MetaData エンドポイントを呼び出した後、他のコンテキストで MetaData エンドポイントを呼び出すと、最初に呼び出されたコンテキストから MetaData が返されることがわかりました。たとえば、2 つの Api コントローラーがあり、それぞれに独自の MetaData エンドポイントがあるとします。
~/Core/MetaData を呼び出すと Core モデルの JSON が返されますが、その後 ~/Forms/MetaData を呼び出すと Forms JSON は返されず、代わりに Core メタデータが返されます。それらを逆に呼び出すと、フォームのメタデータが両方とも取得されます。この問題は、ホスト プロセスがリサイクルされるまで続くようです。
期待どおりに両方のモデルからオブジェクト データにアクセスできることを確認できたので、これがルーティングの問題であるとは思えません。
無効にする必要があるキャッシュがどこかで実行されているかどうか、誰かが教えてくれるでしょうか?
よろしく、
トム・トレジェンナ
breeze - hasChanges() == Appstart で true
編集:JSONが不完全で、一部を切り取る必要がありました
サーバーから初めてクエリを実行すると、どういうわけか、1 つのエンティティに EntityState "Added" が設定されます。DBContextInitializer で 3 人のユーザーを作成します。これは、アプリを起動するたびに発生します。を呼び出すと「Unchanged」状態になりますがManager.rejectChanges()
、これは手動で行う必要があります。
私がそれを行わず、別のエンティティ(おそらくチーム/注文/注文詳細)を保存すると、特定のユーザーは元のエンティティのコピーとして保存され、一意のキーが名前などの値と同じになります。何かを忘れている可能性があるため、コードを何十回もチェックしましたが、この User-Entity の状態の変更をどこにも呼び出していません。
これはManager.getChanges
(EntityType の "User") の出力です:
ここからはあまり情報を引き出すことはできませんが、この特別な部分は奇妙だと思います。この配列の 3 番目のオブジェクトが、null
その配列の直後に State "Added" で表示されるのはなぜですか。
それが役立つ場合は、より多くの情報を提供できます。
javascript - EntityManager の saveChanges() メソッドを使用して単一のエンティティを保存するにはどうすればよいですか?
次のデータ構造があるとします: Ordersのコレクションを持つCustomerエンティティ(1 対 n の関係)。したがって、0 個以上のOrdersの配列を返します。Customer.Orders()
ここで、新しいCustomer newCustomer
と新しいOrdersエンティティ配列を作成します。このOrdersエンティティ配列はCustomerに割り当てられます。すべてのエンティティのエンティティ状態は「追加済み」です。
次に、saveChanges()
次のように呼び出します。
このドキュメントに従ってsaveChanges()
'sパラメータを使用しました: http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html#method_saveChanges[entities]
newCustomer
とそのOrders配列の両方がサーバーに保存されることを期待していましたが、保存されたのは だけ newCustomer
でした。
newCustomer
とそのOrders配列を保存する方法はありますか? パラメータですべてのエンティティを渡すこともでき[entities]
ますが、これは冗長であり、バグの原因となります。メソッドのみを呼び出してすべてのエンティティを保存できることはわかっていますが、特定のエンティティのみsaveChanges()
を完全に保存したいと考えています。
前もって感謝します、
ベルナルド・パチェコ
breeze - ローカル クエリの並べ替えに関する問題
並べ替えとexecuteQueryLocally()
.
いくつかの例:
- 「グループ」という名前のプロパティでの並べ替えは機能します。
.orderBy("Group");
- 「Name」という名前のプロパティでの並べ替えは機能しません。
.orderBy("Name");
この場合、エラーは発生しませんが、配列は並べ替えられません。 - 「グループと名前」の両方での並べ替えは機能します。
.orderBy("Group, Name");
- 「desc」を使用した上記のソートは機能しません。
.orderBy("Group desc");
この場合、次のようなエラーが発生します。Object Group1 has no method 'getProperty'
残念ながら、比較機能をデバッグして何が起こっているのかを確認する機会がありませんでした。
knockout.js - Breeze ノックアウト オブザーバブル配列を複数回クエリする
私はこの時点で立ち往生しており、続行できません。
この方法で検索フォームの ViewModel を作成しています。
後でユーザーが検索ボタンをクリックすると、検索メソッドが起動されます (ここでは簡略化されています)。
query* メソッドは、データを Knockout.js の監視可能な配列に入れるだけです。
問題は、querySucceeded が呼び出されず、Knockout.js がデータバインディングを起動するためにデータが更新されないことです。
私が間違っていることは何ですか?
ここにビューモデルがあります。まだ少し不完全で曖昧です。ブリーズクエリの約束を正しく理解していなかったと思います:
knockout.js - Breeze は ko オブザーバブルを生成しません
単純な MVC4 + ko +そよ風の webapp で次の問題があります。クエリによって返されるそよ風のエンティティは、ko オブザーバブルのない単純な JavaScript オブジェクトです。todo サンプル (これは ko オブザーバブルを正しく返します) を調べましたが、ブリーズが ko で動作する (そしてオブザーバブルを生成する) ように構成されている場所が見つかりませんでした。次の行を追加しようとしましたが、何も変わりませんでした:
あなたの親切な助けに前もって感謝します
breeze - クラスBreeze.WebApi.EntityInfoのすべてのメンバーを公開する計画はありますか?
Breeze.WebApi.ContextProviderをサブクラス化する必要がありますが、内部コンストラクターを持つEntityInfoを使用しています:(クラスEntityInfoのすべてのメンバーを公開する計画はありますか?
breeze - Breeze 0.73.3は、保存後にhasChangesを適切に公開しません
Breeze0.73.3を使用します。JohnPapaのBreezeバージョンのCodeCamperに基づいてアプリをモデリングする-http ://www.johnpapa.net/recent-presentation-on-spa-basics/。manager.hasChangesに問題があるようです。Manager.rejectChanges()は、hasChangesをfalseに公開します。Manager.saveChanges()は、hasChangesへの変更を公開しません。もちろん、保存が成功した後はfalseに公開する必要があります。
breeze - 悪意のあるデータの変更を防ぐための戦略
悪意のあるデータの変更を防ぐためのアイデアを探しています:userAはuserBに属するデータを操作(編集または削除)します。クライアント上にエンティティを作成しているので、それら(または少なくとも一部)を認証されたユーザーに割り当てる必要があります。
例えば:
APIを呼び出すユーザーのIDがわかっているとすると、SaveChanges
このユーザーに対してエンティティ(新規または変更済み)をどのように検証しますか?
頭に浮かぶ最初の考えは、エンティティプロパティをサブクラス化EFContextProvider
し、オーバーライドして、ユーザーのIDと照合することです。例えば:BeforeSaveEntity
OwnerId
このアプローチを使用する場合_currentUserId
、新しいEFContextProvider
クラスのコンストラクターで確立することは意味がありますか?
この問題に取り組むためのアイデアまたはおそらくより良い方法はありますか?