2015-12-07 26 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。 –

相关问题