无法在模板中使用相关模型(EmberJS)

时间:2017-03-20 07:34:22

标签: javascript ember.js handlebars.js ember-data ember-cli-mirage

这就是我所拥有的 2个型号:'注意'和'用户'注意有一个名为" user"这使得重播" 1用户可以使用许多笔记"。数据来自Mirage。

注意型号:

export default DS.Model.extend({
    subject: DS.attr(),
    message: DS.attr(),
    user: DS.belongsTo('user'),
    created_at: DS.attr(),
    updated_at: DS.attr(),
});

用户模型:

export default DS.Model.extend({
    username: DS.attr(),
    email: DS.attr(),
    notes: DS.hasMany('note'),
});

幻影代码:

let notes = [
    {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            user_id: 1,
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        }
    },
    {
        id: 2,
        type: 'note',
        attributes: {
            subject: 'Test 2',
            message: 'klakljadlfkjhasdflij',
            user_id: 1,
            'created-at': '2017-02-10 15:04:22',
            'updated-at': '2017-02-10 15:04:22',
        }
    }
];

let users = [
    {
        id: 1,
        type: 'user',
        attributes: {
            username: 'user',
            email: 'user@email.com',
        }
    }
];

this.get('/notes/:id', function (db, request) {
    let note = notes.find((note) => parseInt(request.params.id) === note.id);
    let result = {
        data: note
    };
    if (request.queryParams.include === 'user') {
        result.included = [users.find((user) => parseInt(note.attributes.user_id) === user.id)];
    }
    return result;
});

检索用户模型(正如我在EmberInspector中看到的那样) 在模板中使用{{model.user.username}}时,输出为空 并且有一个空的用户'我使用{{log model.user}}时的模型。

我认为这个问题可能与“注意事项”有关。模型被提前检索,没有'用户'我建立一个笔记列表时的模型。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的问题是您使用JSONAPISerializer,但您的回复不符合JSONAPI。 JSONAPI期望这样:

{
    data: {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        },
        relationships: {
            user: {
                data: {
                    type: 'user'
                    id: '1'
                }
            }
        }
    }
}

然后加载user id 1

但你的回答是:

{
    data: {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            user_id: 1,
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        }
    }
}

所以ember-data认为此笔记没有用户。阅读JSONAPI以了解所需的响应。