我正在为自己的朋友制作一个推特客户端,并使用Twitter oAuth API使用Backbone.js和php后端。
所以这是场景:
问题是tweeter有时两次返回相同的推文(如RT和东西),并且由于该ID存在于主干集合中,因此会产生此错误:
未捕获错误:无法将同一模型添加到设置两次,119896811958833150
退出程序。 我该如何控制这种情况?或者有更好的方法吗?
window.Tweet = Backbone.Model.extend({});
window.Timeline = Backbone.Collection.extend({
model: Tweet,
url: function(){
var id = (window.lastId) ? window.lastId + "/?" + Math.floor(Math.random()*99999) : "";
return "/connect/timeline/" + id;
}
});
谢谢(对不起我的英文)
答案 0 :(得分:1)
嗯,你肯定有竞争条件。如果您设法发送两个请求并且响应速度非常慢的服务器,则可能会两次发送相同的推文。我不确定你的情况是否存在问题,但肯定是一种选择。
鉴于这是您的问题的根源,您至少有两个选项可以解决它:
修改强>
我认为您的问题只是网址/timeline/SOME-ID-HERE
会返回所有最新的推文,直到给定的ID 包含。我检查了应用程序发送的请求的内容。第一个/timeline
很长,以119912841942802432
结尾。这是您第二次请求中返回的唯一ID。
我不明白地址中的ID如何与推文的ID相关联。第二个请求地址是/timeline/119912841942802430
。另一方面,119912841942802430
与结果中的任何内容都不匹配。 119912841942802432
(最后请注意2
而不是0
)。