【问题标题】:Ember JS + Ember Data: Sideloading doesn't work with string idsEmber JS + Ember 数据:旁加载不适用于字符串 ID
【发布时间】:2013-06-25 15:21:20
【问题描述】:

我正在使用 ember rc3 和 ember-data 12 (sha e324f0e)(基本上是指南中推荐的文件)。我有 2 个模型设置如下:

App.User = DS.Model.extend({
    username: DS.attr('string'),
    playerType: DS.attr('string'),
    cars: DS.hasMany('App.Car')
})

App.Car = DS.Model.extend({
        name: DS.attr('string'),
        thumb: DS.attr('string'),
        user: DS.belongsTo('App.User')
})

返回的json是

{
    "cars": [
        {
            "id": "50ace47234fa7557403e7f02", 
            "name": "Dodge Charger SRT8", 
            "thumb": "/static/images/carthumbs/18331.png", 
            "user_id": "502a754b34fa75280c000a7e"
        }, 
        {
            "id": "508668cc34fa753b78784ca2", 
            "name": "BMW M3 Coup\u00e9", 
            "thumb": "/static/images/carthumbs/23250.png", 
            "user_id": "502a754b34fa75280c000a7e"
        }, 
        {
            "id": "50c7545334fa750ab8cb3ac2", 
            "name": "BMW Z4 M Coup\u00e9", 
            "thumb": "/static/images/carthumbs/7618.png", 
            "user_id": "502a754b34fa75280c000a7e"
        }, 
        {
            "id": "50adf64c34fa750bb036121e", 
            "name": "2013 Ford Shelby GT500\u2122", 
            "thumb": "/static/images/carthumbs/24824.png", 
            "user_id": "502a754b34fa75280c000a7e"
        }
    ], 
    "user": {
        "id": "502a754b34fa75280c000a7e", 
        "car_ids": [
            "50ace47234fa7557403e7f02", 
            "508668cc34fa753b78784ca2", 
            "50c7545334fa750ab8cb3ac2", 
            "50adf64c34fa750bb036121e"
        ], 
        "player_type": "Standard Player", 
        "username": "WillMckenzie"
    }
}

如果我调用 App.User.find("502a754b34fa75280c000a7e"),一切似乎都可以正常加载,但是当我尝试访问用户的汽车属性时,它会触发对汽车 api 路由的第二个 http 请求。我的理解是这不应该是必要的,如果我将 id 更改为基本整数,则不需要。当我使用 Mongo 作为我的数据库时,我的 id 必须采用这种字符串格式。

关于我做错了什么有什么建议吗?

干杯 会

【问题讨论】:

  • 我可以建议您同时更新 ember 和 ember-data 吗?
  • 我尝试使用最新版本的 ember 和 ember-data,但遇到了其他问题。我想我需要更新我的代码以使用最新版本的 API,但他们还没有列出重大更改。您知道有效的特定版本吗?明天再试一次。
  • 我会尝试使用 ember rc5 和 ember-data 13(您不再需要定义商店的 VERSION。
  • 好的,我已经尝试了您建议的版本以及 ember 和 ember-data 的最新版本,但我仍然遇到同样的问题。使用整数 id 可以正常工作,但是一旦我将其切换为使用 Mongo 样式的字符串 id,它就不想知道了。
  • 进行了更多挖掘并尝试通过 ember 数据跟踪流量,结果发现我列出了一个不在返回汽车列表中的汽车 ID。他们的抓法略有不同,我显然在那里的记录很差。这意味着它总是认为需要重新加载该记录,因此会继续请求。显然,当我伪造整数 id 时,它掩盖了这一点。抱歉,感谢大家的帮助!

标签: javascript mongodb ember.js ember-data


【解决方案1】:

以下是答案,因此人们不必深入研究 cmets:

“我列出了一个不在归还汽车列表中的汽车 ID。它们的抓取方式略有不同,我显然在那里有不良记录。这意味着它一直认为它需要重新加载该记录,所以会继续请求。显然,当我伪造整数 id 时,它掩盖了这一点。 - OiNutter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多