如果用户名已存在于 meteor-ionic 中,如何显示错误消息
How to display error message if username already exists in meteor-ionic
我已经使用 Meteor Ionic Demo 代码创建了我的新应用程序。现在,我不想使用电子邮件地址注册,而是使用用户名。
我使用了这个代码 (source):
// server/methods.js
if (Meteor.isServer){
Meteor.methods({
"userExists": function(username){
return !!Meteor.users.findOne({username: username});
},
});
}
// lib/config/at_config.js
AccountsTemplates.addField({
_id: 'username',
type: 'text',
required: true,
func: function(value){
if (Meteor.isClient) {
console.log("Validating username...");
var self = this;
Meteor.call("userExists", value, function(err, userExists){
if (!userExists)
self.setSuccess();
else
self.setError(userExists);
self.setValidating(false);
});
return;
}
// Server
return Meteor.call("userExists", value);
},
errStr: "Bad username"
});
现在的问题是,如果用户名已经存在,我该如何显示错误信息?
目前只显示ionic错误图标,不显示errStr
:
我认为问题是我应该在 func
中 return userExists
,但是我如何等待 userExists
方法服务器调用?
传递给 Meteor.call("userExists", value, function(err, userExists){
的函数是服务器方法 returns 响应时将调用的回调,因此您已经在等待它完成。
从meteor-useraccounts/core的源码来看,好像errStr
只有在func
returnstrue
的时候才会用到。在您的情况下,因为对服务器的调用是异步的,所以 func
返回 undefined
被认为是 'no error'.
此外,图标旁边显示的是字段的状态,该状态由setError
修改。
如果您将错误消息传递给 setError
,它将正确显示。
解决办法是改:
self.setError(userExists);
至:
self.setError("Bad username");
我已经使用 Meteor Ionic Demo 代码创建了我的新应用程序。现在,我不想使用电子邮件地址注册,而是使用用户名。
我使用了这个代码 (source):
// server/methods.js
if (Meteor.isServer){
Meteor.methods({
"userExists": function(username){
return !!Meteor.users.findOne({username: username});
},
});
}
// lib/config/at_config.js
AccountsTemplates.addField({
_id: 'username',
type: 'text',
required: true,
func: function(value){
if (Meteor.isClient) {
console.log("Validating username...");
var self = this;
Meteor.call("userExists", value, function(err, userExists){
if (!userExists)
self.setSuccess();
else
self.setError(userExists);
self.setValidating(false);
});
return;
}
// Server
return Meteor.call("userExists", value);
},
errStr: "Bad username"
});
现在的问题是,如果用户名已经存在,我该如何显示错误信息?
目前只显示ionic错误图标,不显示errStr
:
我认为问题是我应该在 func
中 return userExists
,但是我如何等待 userExists
方法服务器调用?
传递给 Meteor.call("userExists", value, function(err, userExists){
的函数是服务器方法 returns 响应时将调用的回调,因此您已经在等待它完成。
从meteor-useraccounts/core的源码来看,好像errStr
只有在func
returnstrue
的时候才会用到。在您的情况下,因为对服务器的调用是异步的,所以 func
返回 undefined
被认为是 'no error'.
此外,图标旁边显示的是字段的状态,该状态由setError
修改。
如果您将错误消息传递给 setError
,它将正确显示。
解决办法是改:
self.setError(userExists);
至:
self.setError("Bad username");