2017-02-03 5 views
1

emberを使用してデータを保存しようとしているときに再発する問題があります。Emberデータは、アダプタレスポンスに次のIDを持つレコードが見つかると予想されていましたが、それらは紛失していました。

私のlocalforage(Chrome Dev Tools - >タブアプリケーション)をクリアしてアプリケーションをリロードすると、APIに対する一連のリクエストが作成され、それらのAPIコールの結果が作成され、localstorageに保存されます。

エンバーデータは、アダプタ応じて、以下のIDを持つレコードを検索することが予想されるが、彼らは欠落していた:[1,2]

を私は次の警告を取得し、私のストレージをクリアした直後に多くの場合

はその後、私はエラーを取得

アサーションに失敗しました:アプリケーション敷石:ID 1がすでにmodelClass ocularium・フロントエンド@モデルのための別のレコードで使用されてきましたings:

私は自分のストレージをクリアしてリフレッシュしたのでこれは起こりません。彼はそこにあるが実際にそこにないデータを見つける。

これを修正して実際にデータを保存する方法はありますか?それを捕まえてもう一度保管しようとしました。それを「更新」して再度保存しようとしましたが、動作しませんでした。

通常、有効なJSONを使用してAPI応答を取得します。 Emberは次に、以下のようなモデルを使用して、ストアに保存します。モデルは、私は、このコード「storeKey.type」=「アプリケーションの設定」およびデータを使用して保存し、その後、「アプリケーションの設定」

import DS from 'ember-data'; 
export default DS.Model.extend({ name: DS.attr() }); 

この場合には、店舗型と同じ名前を持ち、 =新しいデータ。

this.store.createRecord(request.storeKey.type、data).save();

+0

詳細な情報を提供する必要があります。使用するAPIの種類、レスポンスの表示形式、レコードの保存時に使用する正確なコード – Senthe

+0

私の質問が更新されました。コードを保存するコードは既に書き留めました。 – Driezzz

答えて

0

解決策が見つかったようです。タブのアプリケーションで 'keyvaluepairs'をクリアすると、そこでしかクリアされませんが、まだember-dataにあります。それをリフレッシュすると、そこにはありますが、localforageにはありません。

したがって、私は自分の店のすべてのキーを実行し、それをアンロードします。その後、私は私のlocalforageをクリアします。

let store = this.get('store'); 
for (let key in store.typeMaps) { 
    store.unloadAll(store.typeMaps[key].type.modelName); 
} 

window.localforage.clear().then(() => { 
    Ember.Logger.log('EMBER-DATA STORAGE CLEARED'); 
}); 

関数を呼び出してストアに保存すると、上記の警告とエラーは発生しません。

関連する問題