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

标签 meteor

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

    相关文章:

    android - meteor 应用程序 : Push notifications stopped working for Android 8+ when updating TargetSDK to 26

    javascript - Meteor:单击按钮时将列表项从另一个集合插入到集合中?错误。内部服务器错误

    javascript - Meteor:两种类型的用户,如何处理复杂的 UserAccounts?

    javascript - Meteor 1.3集合引用错误

    javascript - 在 Meteor 中只允许单击一次按钮

    javascript - meteor cursor.map() : GOTCHA How do I extract just one element multiple times?

    mongodb - 使用传统 id 更新 meteor 集合

    javascript - 我如何使用 Meteor 重置客户端订阅

    javascript - 如何使用jquery检索单选按钮内选择标签中的值?

    reactjs - 将 iframe 渲染到 React 中