在blaze模板中显示光标数据不适用于Meteor.call()

在blaze模板中显示光标数据不适用于Meteor.call(),meteor,meteor-blaze,Meteor,Meteor Blaze,ı有一个非常简单的模板,如下所示 <template name="editingUsers"> <div class="container"> <div class="jumbotron"> <ul class="custom-list-stye"> {{#each lastEditors}} <li><span

ı有一个非常简单的模板,如下所示

<template name="editingUsers">
    <div class="container">
        <div class="jumbotron">
            <ul class="custom-list-stye">
                {{#each lastEditors}}
                    <li><span><strong>{{docUser.name}}</strong></span> </li>
                {{/each}}
            </ul>
        </div>
    </div>
</template>
“GetLastEditor”方法通过MongoDB查询返回数据

getLastEditors: function () {
        if(Meteor.user()) {
            const lastEditors = Documents.find(
                {docUser: {$exists: true }},
                {
                    limit:5,
                    sort: { lastEdit: -1 },
                });
            return lastEditors;
        }
    }
使用此代码时,不显示应显示为列表的数据。但是,如果我直接从帮助器进行Mongo DB查询,一切都会正常。以下是工作助手代码。(未删除自动发布包)


正如您所知,ı无法继续使用autopublish包,我必须实现Meteor.methods()。我不明白为什么模板中没有显示Meteor.method返回的光标数据。我可以听听你的意见吗?

替换
自动发布
包的正确方法是实现模式(这是
自动发布
在引擎盖下所做的),而不是使用Meteor方法

您的最后一个代码示例(您可以直接在客户机模板帮助器中搜索
文档
集合)非常好。您只需在服务器上设置至少包含这些文档的发布(如有必要,您可以发布更多),然后订阅,通常在创建模板时订阅

作为短期解决方法,您可以使用中间
ReactiveVar
在模板帮助器中显示光标

此外,在您的客户端上,您必须使用带有回调的
Meteor.call
。它不返回任何内容


请参见

谢谢@ghybs的评论!感谢您的反馈!如果答案确实解决了你的问题或提供了重大帮助,那么感谢他人的方式也是接受答案。
getLastEditors: function () {
        if(Meteor.user()) {
            const lastEditors = Documents.find(
                {docUser: {$exists: true }},
                {
                    limit:5,
                    sort: { lastEdit: -1 },
                });
            return lastEditors;
        }
    }
Template.editingUsers.helpers({
    lastEditors:  function () {
        return Documents.find(
            {docUser: {$exists: true }},
            {
                limit:5,
                sort: { lastEdit: -1 },
            });
    }
});