簡體   English   中英

使用流星插入設置唯一ID

[英]Setting unique id with Meteor insert

我將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); 
                });
            });
    }
});

提前致謝!

插入照片之前檢查照片是否存在

 ...

 _.forEach(data.data, function(photo) {
    if(Photos.findOne({id: photo.id})) return;

    ...

另一種選擇是向id字段添加唯一的鍵索引。 甚至使用_id字段存儲id值。 (請確保使用try catch來確保它不會在第二個插入中引起錯誤)。

每個ID都不同的東西會不會有所不同?

您還可以在使用_.uniq運行唯一性之前清理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM