Ember.js很多很多关系.如何访问数据

com*_*ted 3 ember.js ember-data

我们正在开发一个消息传递系统,允许用户向许多社交媒体帐户提交消息,这将导致每个帐户发布一个帖子.在我们的应用程序中,我们有帐户,消息和帖子.消息是我的内容的单个实例,然后可以作为帖子发送.

帐户可以包含许多消息.

消息可以绑定到许多帐户.消息可以有很多帖子.

帖子属于消息.

我们对数据建模如下:

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')
});
Run Code Online (Sandbox Code Playgroud)

和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'
}];
Run Code Online (Sandbox Code Playgroud)

即使在我们的系统中,消息也可能导致man帖子,就UI而言,消息是1对1的关系.

当我必须首先循环遍历Message时,我无法考虑如何输出生成的Post.此代码正确输出消息,但我需要输出帖子.

{{#each messages in messages}}
    <article>
        <time>{{post.ts}}</time>
        <div class="post-content">
            <h2>{{post.text}}</h2>
        </div>
    </article>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

我试过了{{#each messages in messages.posts}},没什么.在每个循环中,我在{{message}}返回的循环内输出<Social.Message:ember391:1>.我可以使用此语句访问控制台中的Post数据

Social.Account.find().objectAt(0).get('messages').objectAt(0).get('posts')

返回正确类型的对象.

那么,我如何获得每个消息的Post数组?

Mik*_*tti 9

那么,我如何获得每个消息的Post数组?

您可以通过每条消息的posts属性访问post数组.所以在把手中:

{{#each message in messages}}
  <p>Message: {{message}}</p>
  <p>Message posts: {{message.posts}}</p>
  {{#each post in message.posts}}
    <article>
        <time>{{post.ts}}</time>
        <div class="post-content">
            <h2>{{post.text}}</h2>
        </div>
    </article>
  {{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)