我已经编写了一个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.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行调用方法]而出现错误