在 blaze 模板中显示光标数据不适用于 Meteor.call()
Displaying cursor data within a blaze template does not work with Meteor.call()
我有一个非常简单的模板如下;
<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>
我正在用助手填写 HTML 中的列表;
Template.editingUsers.helpers({
lastEditors: function () {
return Meteor.call('getLastEditors');
}
});
'getLastEditors'方法returns数据通过Mongo数据库查询;
getLastEditors: function () {
if(Meteor.user()) {
const lastEditors = Documents.find(
{docUser: {$exists: true }},
{
limit:5,
sort: { lastEdit: -1 },
});
return lastEditors;
}
}
使用这段代码,应该显示为列表的数据没有出现。但是,如果我直接从助手进行 Mongo 数据库查询,一切都会变得正常。以下是工作助手代码。 (未删除自动发布包)
Template.editingUsers.helpers({
lastEditors: function () {
return Documents.find(
{docUser: {$exists: true }},
{
limit:5,
sort: { lastEdit: -1 },
});
}
});
如您所知,我无法继续使用自动发布包,我必须实施 Meteor.methods()。我不明白为什么模板中没有显示从 Meteor.method 返回的游标数据。请问您有什么意见吗?
替换 autopublish
包的正确方法是实现 Publish and Subscribe 模式(这是 autopublish
在幕后所做的),而不是使用 Meteor 方法。
你的最后一个代码示例(你直接在客户端模板助手中搜索你的 Documents
集合)非常好。您只需要在您的服务器上设置一个至少包含这些文档的发布(如果需要,您可以发布更多文档),然后订阅它,通常是在您的模板创建时。
作为短期解决方法,您可以使用中间方法 ReactiveVar
在模板助手中显示光标。
见
此外,在您的客户端上,您必须使用 Meteor.call
回调。它没有 return 任何东西。
我有一个非常简单的模板如下;
<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>
我正在用助手填写 HTML 中的列表;
Template.editingUsers.helpers({
lastEditors: function () {
return Meteor.call('getLastEditors');
}
});
'getLastEditors'方法returns数据通过Mongo数据库查询;
getLastEditors: function () {
if(Meteor.user()) {
const lastEditors = Documents.find(
{docUser: {$exists: true }},
{
limit:5,
sort: { lastEdit: -1 },
});
return lastEditors;
}
}
使用这段代码,应该显示为列表的数据没有出现。但是,如果我直接从助手进行 Mongo 数据库查询,一切都会变得正常。以下是工作助手代码。 (未删除自动发布包)
Template.editingUsers.helpers({
lastEditors: function () {
return Documents.find(
{docUser: {$exists: true }},
{
limit:5,
sort: { lastEdit: -1 },
});
}
});
如您所知,我无法继续使用自动发布包,我必须实施 Meteor.methods()。我不明白为什么模板中没有显示从 Meteor.method 返回的游标数据。请问您有什么意见吗?
替换 autopublish
包的正确方法是实现 Publish and Subscribe 模式(这是 autopublish
在幕后所做的),而不是使用 Meteor 方法。
你的最后一个代码示例(你直接在客户端模板助手中搜索你的 Documents
集合)非常好。您只需要在您的服务器上设置一个至少包含这些文档的发布(如果需要,您可以发布更多文档),然后订阅它,通常是在您的模板创建时。
作为短期解决方法,您可以使用中间方法 ReactiveVar
在模板助手中显示光标。
见
此外,在您的客户端上,您必须使用 Meteor.call
回调。它没有 return 任何东西。