2015-12-07 22 views
0

幾天前我問了這個問題,但刪除了它,我在這裏添加了更多的解釋。將用戶ID與流星中用戶上傳的數據關聯起來

所以我有一個過程,用戶上傳一個CSV,然後由PapaParse解析CSV,然後發送服務器端,最終插入到MongoDb中。

我的問題是,這些上傳都沒有鏈接到特定的用戶,所以任何人都可以以現在看起來的方式訪問每個上傳。

我試圖做的是循環上傳數據,看起來像這樣;

var document = [{object}, {object}, {object}, {object}, {object}... ]; 

我使用的for循環來循環通過每個對象的和經由var currentUser = this.userId;

Meteor.methods({ 
    insert: function(document){ 
    var currentUser = this.userId; 
    var newDocument = document; 

    for(var i = 0; i < newDocument.length; i++){ 
     newDocument[i]._id = currentUser; 
    } 

    Bank.insert(newDocument); 
    } 

問題添加_id字段這包含用戶的ID是存儲器分配是用於更大上傳的問題和meteor簡單地崩潰試圖循環遍歷所有對象,並單獨將_id鍵添加到數組的每個單元格中的每個對象。

當文檔插入MongoDB中,它看起來像這樣:

enter image description here

我知道在我以前的帖子,有人提到,MongoDB的插入方法沒有考慮數組作爲輸入,但不知何故在我的情況下,它的確如此,因爲上面的屏幕截圖就是在將文檔插入到MongoDB之前的樣子。所以基本上,每個對象都是MongoDB中的一個新文檔。我試圖找到一種方法來綁定用戶的用戶ID與數據庫中的每個文檔。

除了循環遍歷整個數據集(有些用戶可能成千上萬)之外,是否還有另一種方法可以將上傳與唯一當前用戶相關聯?

回答

2

爲什麼不只是做?

Meteor.methods({ 
    insert: function(document){ 
    var currentUser = Meteor.userId(); 
    var newDocument = document;  
    Bank.insert({userId: currentUser, data: newDocument}); 
    } 
}); 

現在您的收藏中的每個文件將有兩個userIddata。後者將是你的陣列。

+0

嘿,謝謝你的幫助。現在,用戶的Id與集合相關聯,如下所示:https://i.gyazo.com/171e03faa16380bc3d2ce8709276f790.png因此,如果我正確理解這一點,數據庫中的每個文檔都將是一個具有userId鍵和數據密鑰? –

+0

我有另一個問題:如果同一用戶上傳更多的CSV文件,它們將位於同一個對象文檔中,而不會在相同的用戶ID下創建其他文檔?同樣,用戶是否可以在同一個對象下添加更多數據/上傳額外的CSV文件? –

+1

對於你的第一個問題,是的,Bank中的每個文檔將包含'{_id:String,userId:String,data:Array of objects}'。對於第二個問題:可以將更多csv文件添加到原始文檔,但我不會推薦。請記住,Mongo文檔每個限制爲16MB。 –

相關問題