【问题标题】:"str is undefined" on findRecordfindRecord 上的“str 未定义”
【发布时间】:2017-07-04 00:53:25
【问题描述】:

我的模型和序列化程序有问题。我查看了文档,但找不到解决方案。我的应用已连接到 django rest api。

Django 响应:

{
    "id": 1,
    "url": "http://localhost:8000/users/1/",
    "username": "username",
    "email": "xxx@email.com",
    "is_staff": true
}

型号:

export default DS.Model.extend({
    url : DS.attr('string'),
    username : DS.attr('string'),
    email : DS.attr('string'),
});

我已使用序列化程序修改响应以包含“数据”:

export default DS.JSONAPISerializer.extend({
    primaryKey: 'id',
    normalizeFindRecordResponse(store, type, payload, id) {
        console.log('payload',payload)
        return {
            data: {
                'id': id,
                'url': payload.url,
                'username': payload.username,
                'email': payload.email,
            }
        } ; 
    }
});

路线:

export default Ember.Route.extend({
    model() {
        return this.store.findRecord('users', 1);
    }
});

另一个版本的路由同样报错:

export default Ember.Route.extend({
    model() {
        this.store.findRecord('users', '1').then(function(user){
            console.log('user', user);
        }).catch(function(e){
            console.log('e', e);
        });
    }    
});

Ember 检查器终于有了模型,但所有值都未定义,并且控制台上的“str 未定义”。

Image of ember inspector

【问题讨论】:

    标签: ember.js ember-data ember-model


    【解决方案1】:

    1.normalizeFindRecordResponse 没有返回有效的 JSONAPI 格式, 以下是有效格式,

    {
      "data": {
        "type": "articles",
        "id": "1",
        "attributes": {
          // ... this article's attributes
        }        
      }
    }
    

    如您所见,您缺少typeattributes 键。

    2.您的模型文件名应为单数user.js
    3.this.store.findRecord('users', 1) - 这里你需要使用模型的singluar形式所以this.store.findRecord('user', 1)
    4.在您的另一次尝试中,您缺少模型挂钩中的 return 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-26
      • 1970-01-01
      • 2021-04-12
      相关资源
      最近更新 更多