流星方法的返回值未反映在客户端上

问题描述 投票:0回答:1

我已经编写了一个Meteor.call()方法来检查用户是否已经存在于系统中。

下面是代码

views / clientside.js

  inviteEmail() {
  let inviteEmailAddress = FlowRouter.getParam("inviteEmail");
    var emailExist = false;
    if (inviteEmailAddress !== "") {
       Meteor.apply("v1/checkIfEmailExists", { inviteEmailAddress },  { wait :true  }, (e, r ) => {
        if (e) {
          Meteor.Error(404, "Error checking the email ");
        } else {
          if (r) {
            console.log(inviteEmailAddress + " result found ", r);
            emailExist = true;
          } else {
            console.log(inviteEmailAddress + " result not found ", r);
          }
        }
      });

imports / api / methods.js

export const checkIfEmailExists = new ValidatedMethod({
    name: 'v1/checkIfEmailExists',
    validate: new SimpleSchema({
        inviteEmailAddress: { type: String },
    }).validator(),
    run({ inviteEmailAddress }) {
        console.log("received ", inviteEmailAddress ) ; 
       console.log(Accounts.findUserByEmail(inviteEmailAddress)) ;

        return Meteor.isServer && Accounts.findUserByEmail(inviteEmailAddress)
        // return Meteor.users.find({ _id: { $in: users } }, { fields: { profile: 1, info: 1, emails: 1 } }).fetch();
    },
});

我的问题是,即使用户在数据库中可用,客户端也会始终呈现错误。因此,实质上返回值根本不会反映在客户端数据上。

任何帮助都会很棒。

meteor meteor-blaze meteor-accounts
1个回答
0
投票

[Meteor.apply的第二个参数是参数数组,类似于function.prototype.apply

Meteor.apply("v1/checkIfEmailExists", [{ inviteEmailAddress }],  { wait :true  }, (e, r ) => {

https://docs.meteor.com/api/methods.html#Meteor-apply

您在服务器或客户端上遇到任何错误吗?


编辑:由于Accounts.findUserByEmail是仅用于服务器的方法,因此您会收到有关错误的信息,我认为您已经知道,因为您在返回行中将其置于服务器检查之后。现在由于console.log行调用方法]而出现错误

© www.soinside.com 2019 - 2024. All rights reserved.