gpt4 book ai didi

meteor - 在 Meteor 中显示用户电子邮件地址列表

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

我正在尝试使用 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>

最佳答案

几个问题。我强烈建议您通过 the tutorial至少。 Discover Meteor电子书也是无价之宝。理解 Meteor 的第一步是从传统的 XHR 请求-响应模型转变为发布-订阅模型。

  • 您的 email helper 需要return一个值。
  • Meteor.call()不返回任何东西。通常,您将它与一个回调一起使用,该回调为您提供错误状态和结果。但是,除非您使用 Session 变量或 promise,否则您不能在 helper 中使用它,因为调用的返回值位于错误的上下文级别。
  • 您的 returnmail方法仅返回来自 findOne() 的单个电子邮件地址也不是任何特定的,只是一个准随机的(你不能保证哪个文档 findOne() 会返回!)
  • 您正在创建 5 个具有相同电子邮件地址和密码的相同用户。由于电子邮件字段的唯一性约束,2-5 将失败。

  • 现在进入解决方案。
  • 在服务器上,发布仅包含电子邮件字段(对象数组)的用户集合
  • 在客户端上,订阅该发布。
  • 在客户端,遍历用户集合并从帮助程序获取电子邮件地址。

  • 服务器:
    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>

    关于meteor - 在 Meteor 中显示用户电子邮件地址列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469191/

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