わからない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
}]
});
私のフィールドuser_id
は、1人のユーザー(バックボーンのモデルでもあります)の外部キーです:
var User = Backbone.RelationalModel.extend(
{
urlRoot: Backbone.rootApiUrl + '/users',
defaults: {
id: '',
name: '',
email: '',
firstname: '',
lastname: '',
password: '',
card_nb: '',
cart_total: ''
}
});
私のフェッチ関係は、それぞれのモデルで完全に機能します。しかし、Product.user_id
と User モデルの間にリレーションを配置すると、wtf エラーが発生します。
私は可能な限りすべてを試しました:すべてのキー(keySource
、keyDestination
..........可能なすべての値で)。何が起こったのかを監視できるように、Relation Lib にブレークポイントを設定しました ... 言うことはありません。StackOverflow でさえ、このバグを知りません :P (または、ひどく検索しました)
最終的な問題は次のとおりです。
- 私の製品は API によって正しく送信され、バックボーン (OK) に設定されます。
- フィールド
user_id
は、最初に製品 API 応答によって数値に設定され、次にオブジェクト ユーザーに置き換えられるのではなく、リレーショナルによって NULL に設定されます (なぜ?) - ネットワーク デバッガを見ると、Relational は User オブジェクトの API を呼び出します (ここで問題あり
user_id
ません)。サーバーの応答は良好で、JSON に適切なユーザーが含まれています (OK)。しかし、リレーショナルはこの応答オブジェクトを field にバインドしませんuser_id
。これは現在 .... NULL (NOT OK) です。- そのため、 User オブジェクトが失われました (ただし、 autoFetch に成功関数を入れた場合は console.log() できます)、フィールドで親の Product に正しくリンクされていません
user_id
。
- そのため、 User オブジェクトが失われました (ただし、 autoFetch に成功関数を入れた場合は console.log() できます)、フィールドで親の Product に正しくリンクされていません
EDIT : JSFiddle はhttp://jsfiddle.net/gjdass/WNWrm/で利用できます(注意してください。API は応答に時間がかかる場合があります。約 10 秒です。これは正常です)。
よろしくお願いします :/ お時間をいただき申し訳ありません。