更新事件中的反应变量

Update reactive variable from event

本文关键字:变量 事件 更新      更新时间:2023-09-26

我正在使用

Template.uploadFile.events({
  'change .set-file': function ( event, template ) {
    var file = event.currentTarget.files[0];
    [...]
  }
});

上传文件时。

我想读取文件中的每一行,并将每一行作为文档插入集合中。

问题是,我想反应性地向用户显示已经创建了多少行。

首先,我需要将文件中的行数设置为一个变量。我必须在事件中设置变量,因为我只知道读取文件后的行数(即事件已触发)。

我想我必须做一些类似的事情

Template.uploadFile.helpers( {
  numRows: function () {
    return ?;
  },
  numInsertedRows: function () {
    return ?;
  },
} );

插入的行数可能只是我收藏的文档数;然而,我想在插入收藏的同时阅读收藏是非常需要内存的。

因此,我认为最好只使用普通变量,因为所有信息都应该在不询问数据库的情况下可用。

我有一个环形

rowsInFile.forEach( function ( row ) {
    // add 1 to number of inserted rows
} );

但是该循环也应该改变反应变量中的一个。

我想我应该用一个反应变量。我说得对吗?这是最节省内存的方法吗?

您可能会使事情过于复杂。仅count()集合中的文档:

Template.uploadFile.helpers({
  numRows: function(){
    return myCollection.find({}).count();
  }
});

您可以对插入的数字执行同样的操作,假设您可以编写一个可靠地找到它们的查询。否则,您可以在循环中增加Sessionreactive变量并返回。