3

DS.Model私は2つのクラスの間に次の関係を持っています:

App.DocumentType = DS.Model.extend
  ...
  propertyTypeJoins: DS.hasMany("App.DocumentTypePropertyType")

App.DocumentTypePropertyType = DS.Model.extend
  documentType: DS.belongsTo('App.DocumentType')

子レコードは常に埋め込まれ、個別に保存されることはありません:

App.Adapter.map 'App.DocumentType'
  propertyTypeJoins:
    embedded: 'always'

documentTypeレコードと n 関連のレコードを使用してトランザクションをコミットするとDocumentTypePropertyType、次のエラーが発生します。

"Attempted to handle event 'didCommit' on <App.DocumentTypePropertyType:ember1806:38072> while in state rootState.loaded.updated.uncommitted. Called with undefined"

コードを調べると、アダプターのメソッドが各埋め込みレコードにイベントをdidSaveRecord送信することがわかりました。didCommit子は親と一緒に保存されると宣言されているため、これはまったく問題ないようです (embedded: 'always'上記を参照)。

willCommitイベントが子に伝達されないため、エラーが発生します。したがって、子はまだuncommitted状態にあり、その状態では処理できませんdidCommit。親自体が移行されたinFlightため、エラーはスローされません。

私の意見では、観察された動作には一貫性がありません。すべてのイベントを子に送信するか、何も送信しないかのいずれかです。そうしないと、あらゆる種類の一貫性のない動作が発生する可能性があります。

私は ember-data ではなく、反対しているように見えるので、自分が間違っていることを考えるために立ち止まりました。

教えて頂けますか?

4

0 に答える 0