我几天前问了这个问题,但删除了它,我在这里添加了更多的说明。
所以我所拥有的是一个用户上传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时,它看起来像这样:
我在之前的帖子中知道,有人提到MongoDB的insert方法不会将数组作为输入,但在我的情况下,确实如此,因为上面的截图正是文档在插入MongoDB之前的样子。基本上,每个对象都是MongoDB中的新文档。我正在尝试找到一种方法将用户的userID绑定到数据库中的每个文档。
是否有另一种方法可以将上传与唯一的当前用户相关联,而不是循环遍历整个数据集,某些用户可能会成千上万?
答案 0 :(得分:2)
为什么不这样做?
Meteor.methods({
insert: function(document){
var currentUser = Meteor.userId();
var newDocument = document;
Bank.insert({userId: currentUser, data: newDocument});
}
});
现在,您馆藏中的每个文档都有两个键:userId
和data
。后者将是你的阵列。