私たちは、ユーザーが多くのソーシャルメディアアカウントにメッセージを送信できるようにするメッセージングシステムに取り組んでいます。これにより、各アカウントに投稿が行われます。私たちのアプリケーションには、アカウント、メッセージ、投稿があります。メッセージは私のコンテンツの単一のインスタンスであり、投稿として送信できます。
アカウントには多くのメッセージを含めることができます。
メッセージは多くのアカウントに関連付けることができます。メッセージには多くの投稿を含めることができます。
投稿はメッセージに属します。
次のようにデータをモデル化します。
Social.Account = DS.Model.extend({
username: DS.attr('string'),
messages: DS.hasMany('Social.Message')
});
Social.Message = DS.Model.extend({
user_id: DS.attr('number'),
text: DS.attr('string'),
accounts: DS.hasMany('Social.Account'),
posts: DS.hasMany('Social.Post')
});
Social.Post = DS.Model.extend({
created: DS.attr('date'),
text: DS.attr('string'),
message: DS.belongsTo('Social.Message')
});
FIXTUREデータは次のようになります。
Social.Account.FIXTURES = [{
id: 1,
username: "commadelimited",
messages: [1, 2]
}];
Social.Message.FIXTURES = [{
id: 1,
user_id: 1,
text: 'This is message #1 sent by account #1',
accounts: [1],
posts: [1]
}, {
id: 2,
user_id: 1,
text: 'This is message #2 sent by account #1',
accounts: [1],
posts: [2]
}];
Social.Post.FIXTURES = [{
id: 1,
created: "5 minutes ago",
text: 'This is post #1 sent by account #1, tied to message #1'
}, {
id: 1,
created: "5 minutes ago",
text: 'This is post #2 sent by account #1, tied to message #2'
}];
私たちのシステムでは、メッセージは人の投稿になる可能性がありますが、UIに関する限り、メッセージは1対1の関係です。
最初にメッセージをループすることから始めなければならないときに、結果の投稿を出力する方法を考えるのに苦労しています。このコードはメッセージを正しく出力しますが、代わりに投稿を出力する必要があります。
{{#each messages in messages}}
<article>
<time>{{post.ts}}</time>
<div class="post-content">
<h2>{{post.text}}</h2>
</div>
</article>
{{/each}}
私は試しましたが{{#each messages in messages.posts}}
、それは何もありません。{{message}}
各ループ内で、を返すループ内で出力しました<Social.Message:ember391:1>
。このステートメントを使用して、コンソールの投稿データにアクセスできます
Social.Account.find().objectAt(0).get('messages').objectAt(0).get('posts')
これは正しいタイプのオブジェクトを返します。
では、各メッセージのPost配列を取得するにはどうすればよいですか?