-- Ember Data 2.7.1 を使用 --
最初に toArray() を使用して配列に変換せずに、レコードのコレクションの順序を逆にしようとしています。このオブジェクトのコレクションは、this.store.findAll('history-item') によって返される promise から取得されます。
プレーンなJavaScriptにするのではなく、これを残り火の方法で行いたいです。typeError: internalModel.getRecord が record-array.js から来ています。objectAtContent() を実行しようとすると、何らかの理由で、探しているコンテンツに型がないように見えます。スタック トレースを介して、私が扱っているオブジェクトが [Class] であることがわかります。class は履歴アイテム モデルです。objectAtContent() の前のいくつかのスタック呼び出しで、処理されるオブジェクトは、その履歴アイテム モデルから型属性を持たない他のクラス オブジェクトに切り替わります。
Ember Inspector を使用して自分のデータを正しく表示することができます。また、元のレコード コレクションをテンプレートに表示すると、正しく表示されます。
誰かがこれに遭遇しましたか?
いくつかの考えと考慮事項:
- findAll() がバックグラウンドでリロードされているため、反転が許可されていない約束でどのように機能するかについて、何か特別なことはありますか? ライブデータをリロードし続けたいです。
-私は ember-cli-mirage を使用してデータベースとエンドポイントをモックしています。私が思う文字の指示に従っています。Mirage には未構成の JSONAPISerializer を使用し、ember には未構成の JSONAPIAdapter を使用しています。裏から送られてくるメタデータと何か関係があるのでしょうか? モデルやレコードが設定されていないことに何か関係があるのでしょうか? 私がしなければならない特別なことはありますか?
モデルを定義し、それを元に戻そうとするルート セグメント: [注: ルートでデータを準備する (順序付けする) ことは慣例ではないかもしれませんが、説明を簡単にするためにここに入れました。私は通常、コントローラーまたはコンポーネントの外側で行います]
model(){
return this.get('store').findAll('history-item').then(function(items){
return items.reverseObjects();
}).catch(failure);
履歴リスト モデルの宣言:
export default DS.Model.extend({
question: DS.attr('string'),
answer: DS.attr('string')
});
Ember-Cli-Mirage config.js エンドポイント:
this.get('/history-items', (schema) => {
return schema.historyItems.all();
});
履歴項目の Ember-Cli-Mirage フィクスチャ:
export default [
{id: 1, question: "1is this working?", answer: "Of course!"}
}
エラー:
TypeError: internalModel.getRecord coming from record-array.js
この問題は、セーブ ア レコードを作成しようとしたときにも発生します。保存は成功しますが、モデルがリロードされる (および元に戻そうとする) と、同じエラーで失敗します。私がフィクスチャであるかどうかは関係ありません。
コントローラ:
var newHistoryItem = this.store.createRecord('history-item', {
question: question,
answer: answer
});
newHistoryItem.save().then(success).catch(failure);