我正在将FB Graph API链接到Meteor,以便我可以检索用户照片,并且我无法将Meteor id设置为每张照片的Facebook ID。现在,当调用该函数时,它将在数据库中多次返回相同的照片,因为Meteor每次都会为每张照片分配一个新的_id。
例如,一个条目可能如下所示:
Object {_id: "cnMsxSkmMXTjnhwRX", id: "1015160259999999", from: Object, picture: "https://photoSmall.jpg", source: "https://photoBig.jpg"…}
第二次,再次执行电话后,就像这样:
Object {_id: "acMegKenftmnaefSf", id: "1015160259999999", from: Object, picture: "https://photoSmall.jpg", source: "https://photoBig.jpg"…}
从而在MongoDB中创建两个id字段。
我正在使用的代码如下。我已经尝试了许多方法来修复代码无济于事。
Meteor.methods({
getUserData: function() {
var fb = new Facebook(Meteor.user().services.facebook.accessToken);
var data = fb.getUserData();
_.forEach(data.data, function(photo) {
Photos.insert(photo, function(err) {
if(err) console.error(err);
});
});
}
});
提前致谢!
答案 0 :(得分:0)
在插入照片之前检查照片是否存在
...
_.forEach(data.data, function(photo) {
if(Photos.findOne({id: photo.id})) return;
...
另一种选择是向id
字段添加唯一键索引。甚至可以使用_id
字段来存储id
值。 (务必使用try catch以确保它不会导致第二个插入错误。)
使用不同的ID不会有不同的东西吗?
您还可以在使用_.uniq