私は ember-cli と ember 2.3 にアップグレードしています。User と呼ばれるモデルと Post と呼ばれるモデル、そしてユーザーがあるとします...
posts: DS.hasMany('post', {async:true})
これで、データを遅延読み込みし、.js またはテンプレートで必要な場合を除き、投稿を読み込まずに、期待どおりに動作します。だから私がするとき
{{#each user.posts as |post|}}
{{post.title}}
{{/each}}
各投稿で問題なくタイトルをレンダリングできます。ただし、サーバー ログには次のように表示されます。
GET /posts/2
GET /posts/7
GET /posts/13
数字は投稿IDです。サーバーからユーザー インスタンスを返すときに、ID のリストをパラメーター 'posts' として返すため、これは当然のことです。したがって、ユーザーインスタンスには次のものがあります。
...
'posts': '2,7,13'
...
そのデータで。
さて、私の質問は次のとおりです。以前、ember-data 1.0 (ember-cli および ember 1.13 より前) を使用していたとき、同じユースケースの代わりにデータベースに対してこの呼び出しが行われたことを覚えています。
GET /posts?ids=2&7&13
またはその線に沿った何か。正確な形式は思い出せませんが、次のコード行を使用して、サーバー側の ID のリストにアクセスできました。
var ids = req.query.ids.toString();
これにより、IDのコンマ区切りリスト(文字列形式)が得られました。次に、これをSQLステートメントに変換します
SELECT * from posts where id in (2,7,13)
この SQL 呼び出しは、Ember 側では manyArray として解釈され、Ember Array が期待するように簡単に動作したと思います。
これを再び発生させるにはどうすればよいですか?私は何かが欠けていると確信しており、ember データを「ハック」する必要はありません。「投稿」ごとにデータベースへの個別の呼び出しを行うのではなく、これらの呼び出しを 1 つに圧縮したいと考えています。
また、これらの呼び出しに対して {async:false} を作成するつもりはないことにも言及する必要があります。