使用Deps.autorunCollection.observe来保持第三方小部件与react 式Meteor.Collection同步的优缺点是什么.

例如,我使用jsTree直观地显示我存储在MongoDB中的目录树.我用这个代码让它react :

// automatically reload the fileTree if the data changes
FileTree.find().observeChanges({
  added: function() {
    $.jstree.reference('#fileTree').refresh();
  },
  changed: function() {
    $.jstree.reference('#fileTree').refresh();
  },
  removed: function() {
    $.jstree.reference('#fileTree').refresh();
  }
});

使用这种方法与Deps.autorun次调用相比,有哪些利弊:(未经测试)

Deps.autorun(function() {
  jsonData = FileTree.find().fetch();
  $.jstree.reference('#fileTree')({'core': {'data': jsonData} });
});

这只是一个例子.我问的是总体上的利弊,而不是这个特定的用例.

推荐答案

副局长.自动运行,现在是跟踪器.自动运行是一个react 式计算块.然而,observeChanges提供了一个回调,以在某些事情发生变化时进行响应.

当你使用Deps时.autorun,function() {...}中的整个块,将在每次react 变量或文档以任何方式(即更新、删除或插入)或任何其他react 变量更改时重新运行.

observeChanges回调进行了更精细的调整,并根据查询对添加、更改或删除的内容启动回调.

根据上面的代码,实际上两者是相同的.如果DEP中有更多的react 变量.autorun block(自动运行块)则observeChanges种方法会更有效.

一般来说,第一种样式效率更高,但由于您的代码位于上面,它们几乎相同,这取决于您的偏好.

Mongodb相关问答推荐

当日期和时间在不同键的字符串中时,Mongo 查询过滤今天的数据

MongoDB - 将对象转换为数组

MongoDB DB参考返回null值

Mongodb Timeseries / Golang - ['timestamp' 必须存在并包含有效的 BSON UTC 日期时间值]

管道聚合mongodb同一$project阶段的计算字段?

可变用户 Select

在 MongoDB 中,如何使用对当前值进行操作的函数来更新嵌套文档的值?

Mongodb按值分组并计算出现次数

Nestjs中不同语言数据的mongodb聚合代码

Pymongo API TypeError: Unhashable dict

在一个变量上运行的 Node JS 中使用正则表达式的 Mongo 查询

NoSql 参考数据

如何在mongodb中删除数组的第n个元素

如何确保基于特定字段的数组中的唯一项 - mongoDB?

如何使用 angular.js 推送通知?

如何使用 mgo 和 Go 查询 MongoDB 的日期范围?

如何使用 Pymongo 在 MongoDB 中 Select 单个字段?

在 mongoose 中使用 UUID 进行 ObjectID 引用

PyMongo 创建具有 2 个或更多字段的唯一索引

MissingSchemaError:Schema hasn't been registered for model