将用户ID与Meteor中用户上传的数据相关联

时间:2015-12-07 16:10:10

标签: mongodb meteor meteor-accounts

我几天前问了这个问题,但删除了它,我在这里添加了更多的说明。

所以我所拥有的是一个用户上传CSV的过程,然后由PapaParse解析CSV,然后发送服务器端并最终插入到MongoDb中。

我的问题是这些上传都没有链接到特定用户,因此任何人都可以按照现在的状态访问每次上传。

我尝试做的是循环上传数据,看起来像这样;

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

我使用for循环遍历每个对象并添加_id字段,其中包含用户的ID 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);
  }

问题是内存分配对于较大的上传是一个问题,而meteor只是崩溃试图遍历所有对象并单独将_id键添加到数组的每个单元格中的每个对象。

当文档插入MongoDB时,它看起来像这样:

enter image description here

我在之前的帖子中知道,有人提到MongoDB的insert方法不会将数组作为输入,但在我的情况下,确实如此,因为上面的截图正是文档在插入MongoDB之前的样子。基本上,每个对象都是MongoDB中的新文档。我正在尝试找到一种方法将用户的userID绑定到数据库中的每个文档。

是否有另一种方法可以将上传与唯一的当前用户相关联,而不是循环遍历整个数据集,某些用户可能会成千上万?

1 个答案:

答案 0 :(得分:2)

为什么不这样做?

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

现在,您馆藏中的每个文档都有两个userIddata。后者将是你的阵列。