我有一个非常奇怪的问题。我有一个 Backbone 集合,我正在使用 where 方法在集合中查找与某个属性匹配的模型。我的问题是结果不一致。
我有一个joinedGoalList,它跟踪用户加入的目标。假设这个集合包含两个 ID 分别为 1 和 3 的目标。当用户访问 /goals/3 时,应显示一条消息,说明用户已加入目标
我在访问 /goals/3 时遇到问题,一半时间显示消息,另一半时间不显示消息。
奇怪的是,这个问题只发生在我的远程服务器上,而不是我的本地主机上。
在我的代码中,我在joinedGoalList 中查询ID 为3,如果它匹配,我知道matches 数组必须大于0,因此我呈现了显示用户已加入目标的消息。
这是代码(joinedGoalList 是一个 Backbone 集合:
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。