Javascript Meteor助手函数在使用';芬顿';

Javascript Meteor助手函数在使用';芬顿';,javascript,performance,meteor,meteor-helper,Javascript,Performance,Meteor,Meteor Helper,让我们假设我有一本书: { title : "string", author : "string" } 让我们看一下以下代码: Template.bookList.helpers({ books: function() { console.log('meteor'); return Posts.find(); } }); 在这种情况下,“流星”将打印一次。但是如果我像这样使用findOne: Template.bookItem.helpers({

让我们假设我有一本书:

{
 title : "string",
 author : "string"
}
让我们看一下以下代码:

Template.bookList.helpers({
    books: function() {
      console.log('meteor');
      return Posts.find();
    }
});
在这种情况下,“流星”将打印一次。但是如果我像这样使用
findOne

Template.bookItem.helpers({
    book: function() {
      console.log('meteor');
      return Posts.findOne({'title':'title of the book'});
    }
});
“流星”将被打印几次(在某些情况下是六分之二)

为什么

您应该使用
{{{{#with}}
来触发函数吗?
有时
{{{#if}}
在destine上不起作用

这是因为
助手
在任何数据更改时都是被动的,它将重新运行函数:)您可以执行
返回帖子禁用它。我尝试了这个。但是结果仍然是一样的。我认为你的
书籍
模板助手将被执行多次,因为你的
书籍
集合中有多个文档,并且你将
书籍项目
模板包含在
{{{each Books}{{>booksitem}{/each}{/code>中。不,我没有在这里使用每一个,如果使用each,我会得到以下错误
未捕获错误:{{{each}当前仅接受数组、游标或假值。
@distalx如果仍在重新运行,请查看模板级别是什么导致模板重新呈现的?如果不是数据更改,则是模板重新渲染。显示您的模板代码。您还可以尝试在onRendered中执行
console.log()
,看看它是否也会被多次调用?