作业完成后,NULL的RelationalModel关系字段

gjd*_*ass 8 javascript model-view-controller relational-model backbone.js backbone-relational

我得到了一个我无法弄清楚的wtf问题.我解释 :

我有一个名为Product的模型:

var Product = Backbone.RelationalModel.extend(
{
    urlRoot: Backbone.rootApiUrl + '/products',
    defaults: {
        id: '',
        name: '',
        description: '',
        current_price: '',
        categories: '',
        duration: '',
        shipping_cost: '',
        start_date: '',
        user_id: null,
        is_buy_it_now: ''
    },

    relation: [{
        type: Backbone.HasOne,
        key: 'user_id',
        relatedModel: User,
        autoFetch: true
    }]
});
Run Code Online (Sandbox Code Playgroud)

我的字段user_id是一个用户的外键(也是Backbone中的模型):

var User = Backbone.RelationalModel.extend(
{
    urlRoot: Backbone.rootApiUrl + '/users',
    defaults: {
        id: '',
        name: '',
        email: '',
        firstname: '',
        lastname: '',
        password: '',
        card_nb: '',
        cart_total: ''
    }
});
Run Code Online (Sandbox Code Playgroud)

我的获取关系在每个单独的模型中都能很好地工作 但是当我在Product.user_id和我的用户模型之间建立关系时,会发生wtf错误.

我已经尽了一切可能:所有的钥匙(keySource,keyDestination............所有值都可能).我甚至在关系库中加入了断点,以便能够观察发生的事情......没什么好说的.甚至StackOverflow都不知道这个bug:P(或者我搜索得很糟糕)

最后一个问题是:

  • 我的产品由API正确发送并在Backbone(OK)中设置.
  • 该字段user_id首先由Product API响应设置为一个数字,然后通过Relational置于NULL而不是被对象User(WHY?)替换
  • 当我观察我的网络调试器时,Relational使用user_id数字(OK)调用User对象的API(它就在这里).服务器响应很好,正确的用户使用JSON(OK).但是Relational不会将此响应对象与字段绑定user_id,现在是...... NULL(不行).
    • 所以我丢失了一个User对象(但是如果我在我的autoFetch中添加了一个成功函数,我可以调用console.log()),没有正确地链接到他的父产品user_id.

编辑:一个JSFiddle可以在这里http://jsfiddle.net/gjdass/WNWrm/(小心,API可以很长时间响应,大约10秒,这是正常的).

在此先感谢:/抱歉,你可以采取这个时间.

Pet*_*r G 1

如果删除 的默认值,它的行为是否会有所不同user_id?我想知道它是否正在获取关系然后应用 的默认值null

如果尚未设置,您也可以尝试设置Backbone.Relational.showWarnings为,并检查控制台是否有任何警告。true