gpt4 book ai didi

javascript - Meteor Helpers 缓存游标

转载 作者:行者123 更新时间:2023-12-02 22:15:23 25 4
gpt4 key购买 nike

我有一个模板,其中包含一个选择,使用户能够筛选显示在表格上的集合中的某些对象。

我将选择的结果存储在 ReactiveVar 中。然后,我在查询 Helper 中使用此 ReactiveVar 将我的对象返回到模板。

模板代码

<select id="colorSelect">
<option val="getRed">getRed</option>
<option val="getBlack">getBlack</option>
</select>

<table>
{{#each Objects}}
/* create table */
{{/each}}
</table>

这是 JS

//onCreated initializing Template ReactiveVar for Object's Color
Template.Object.onCreated(function() {
this.color = new ReactiveVar("");
});

//event for changing 'color' based on select option
Template.Object.events({
'change #colorSelect'(e, template) {
const target = e.target;
const color = $(target).val();
template.color.set(color);
}
});

//Helper method to return Objects
Template.objects.helpers({
Objects: function() {
const color = Template.instance().color.get();
return Objects.find({foo:bar, color:color}).fetch();
}
});

这一切似乎工作得很好,我的表格根据选择进行 react 性调整。我的问题是关于效率以及框架是否知道缓存我已经获得的光标。那么每次用户更改选择时它都会执行 DB.find() 吗?

这样效率更高吗1. 进行一项初步查找2. 然后过滤这个主要原始数据(来自 fetch 调用的数组)3.最后返回UI然而,这样做似乎完全失去了 react 性的任何优势,并且需要使用 JS 重新排列表格。

或者...Meteor 是否只知道缓存我已经获得的游标(它是否会产生性能差异 - 因为它是从 MiniMongo 获取的......据我所知,这只是一个 JSON 对象)

这种将reactiveVar与Helper结合使用的模式是标准吗?

最佳答案

我想说你的代码非常可靠,这实际上是它如何完成的标准,所以不用担心这部分。

至于效率和缓存,需要注意的是,客户端已经在 minimongo 中保存了服务器数据、订阅的本地副本,因此只要您:

  • 将这些数据保持在最低限度;不要过度发布
  • 不要不断地重新订阅新数据从而破坏旧数据

你可以走了。 :)

关于javascript - Meteor Helpers 缓存游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59399180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com