我正在尝试使用Metor.methods
获取meteor中所有用户的列表这是我的代码: 服务器/ main.js
Meteor.methods({
'createUser': function(){
if (Meteor.users.find({}).count()===0) {
for (i = 0; i <= 5; i++){
let id = Accounts.createUser({
email: Meteor.settings.ADMIN_USE,
password: Meteor.settings.ADMIN_PASSWORD,
profile: { firstName: Meteor.settings.ADMIN_FIRSTNAME, lastName: Meteor.settings.ADMIN_LASTNAME }
});
}
}
},
'returnmail': function(){
return Meteor.users.findOne().emails[0].address;
}
});
然后我在另一个名为 Listusers.js 的文件中调用此函数:
Template.ListUsers.helpers({
email: function(){
Meteor.call('returnmail');
},
});
我正在尝试使用此代码显示电子邮件的值,但它不起作用
客户端/ ListUsers.html
<Template name="ListUsers">
<input id="mail" type="text" value="{{email}}" />
</Template>
答案 0 :(得分:3)
几个问题。我强烈建议您至少通过the tutorial。 Discover Meteor电子书也非常宝贵。理解Meteor的第一步是从传统的XHR请求 - 响应模型转变为发布 - 订阅。
email
帮助者需要return
一个值。Meteor.call()
不会返回任何内容。通常,您将它与回调一起使用,以便为您提供错误状态和结果。但是,除非使用会话变量或 promise ,否则不能在帮助程序中使用它,因为调用的返回值是在错误的上下文级别。returnmail
方法只返回findOne()
的单个电子邮件地址,而不是任何特定的电子邮件地址,只是一个准随机的(您无法保证哪个文档findOne()
是要回来!)现在解决方案。
服务器:
Meteor.publish('allEmails',function(){
// you should restrict this publication to only be available to admin users
return Meteor.users.find({},{fields: { emails: 1 }});
});
客户js:
Meteor.subscribe('allEmails');
Template.ListUsers.helpers({
allUsers(){ return Meteor.users.find({}); },
email(){ return this.emails[0].address; }
});
客户端html:
<Template name="ListUsers">
{{#each allUsers}}
<input id="mail" type="text" value="{{email}}" />
{{/each}}
</Template>