2016-11-16 3 views
0

私はcreateRecordを使ってモデルをインスタンス化しました。今、レコードが保存される前にそのレコードのIDを取得するにはどうすればよいですか?オブジェクトが初期化されたときに、emberオブジェクトの一意のIDを取得するにはどうすればよいですか?

+0

あなたは燃えさしデータを使用しているような音。その場合は、質問にタグを追加します。 –

答えて

1

あなたの記録のためにグローバルにユニークなIDが クライアント上で生成する必要がある場合は、generateIdForRecord()メソッドを実装し、generateIdForRecord

http://emberjs.com/api/data/classes/DS.Adapter.html#method_generateIdForRecord

を考慮することができます。このメソッドは、新しいレコードを作成するたびに が呼び出され、そこから返された値 がレコードのprimaryKeyに割り当てられます。

従来のRESTライクなHTTP APIのほとんどは、このメソッドを使用しません。 代わりに、サーバーのレコードIDが設定され、 didCreateRecord()を呼び出すと、 アダプターは新しいIDでストアを更新します。クライアント側で レコードIDを生成する場合にのみ、この方法を実装してください。あなたも、モデル固有のアダプターを作成することができます

postモデルは、あなたがpostアダプタを作成し、generateIdForRecordメソッドをオーバーライドすることができると言います。

アダプター/ post.js

import ApplicationAdapter from './application'; 
import DS from 'ember-data'; 
import { v4 } from 'uuid'; 

export default ApplicationAdapter.extend({ 
    generateIdForRecord: function(store, inputProperties) { 
    return v4(); 
    } 
}); 
+0

さて、これはおそらく解決策です。 ember-dataのデフォルトの動作はIDを生成しないことに注意することが重要です。クライアントサイドIDの生成が必要な場合は、ここで@kumkanillamの説明に従って実装する必要があります – Casey

+0

解決していただきありがとうございます:) –

関連する問題