私は非常に奇妙な問題を抱えています。バックボーンコレクションがあり、whereメソッドを使用して、特定の属性に一致するコレクション内のモデルを検索しています。私の問題は、結果の不一致です。
ユーザーが参加した目標を追跡するjoinedGoalListがあります。このコレクションにIDが1と3の2つの目標が含まれているとします。ユーザーが/goals/ 3にアクセスすると、ユーザーが目標に参加したことを示すメッセージが表示されます。
/goals/3にアクセスしているときに問題が発生し、メッセージが表示される時間の半分と、メッセージが表示されない時間の残りの半分があります。
奇妙なことに、この問題はリモートサーバーでのみ発生し、ローカルホストでは発生しません。
私のコードでは、joinedGoalListに3のIDを照会し、一致する場合は、matches配列が0より大きくなければならないことがわかっているので、ユーザーがゴールに参加したことを示すメッセージをレンダリングします。
コードは次のとおりです(joinedGoalListはバックボーンコレクションです:
console.log(joinedGoalList);
var matches = joinedGoalList.where({id: this.model.get("id")});
console.log(matches);
console.log(matches.length);
if (matches.length > 0) {
console.log("the matches length is > 0");
this.renderLeaveGoal();
} else {
console.log("the matches length is 0");
this.renderJoinGoal();
}
これがの結果ですconsole.log(joinedGoalList)
、これが結果です(それらは一貫しています):
child
_byCid: Object
_byId: Object
_callbacks: Object
length: 2
models: Array[2]
__proto__: ctor
ご覧のとおり、長さは2です。一方のオブジェクトのIDは1で、もう一方のオブジェクトのIDは3です。これはページの読み込み全体で一貫しています。
IDが3のオブジェクトの配列で一致を実行すると、不整合が発生します。一部のページの読み込みでは一致が検出されますが、他のページの読み込みでは一致が検出されません。
の結果はconsole.log(matches.length)
、リモートサーバーでは0または1ですが、ローカルホストでは常に1です。