在方法中调用时,似乎“Meteor.loginWithPassword”函数不起作用。
我想用autoforms创建我的登录表单,因此我创建了一个回调方法,在用户提交登录表单后调用该方法。表单以正确的方式调用,但loginWithPassword函数似乎不起作用。
这是我的方法(在客户端和服务器端)
Meteor.methods({
autoform_test_login : function (doc) {
console.log('Called login method');
if (Meteor.isClient) {
Meteor.loginWithPassword('test', 'test', function(e) {
if (e) {
console.log(e);
}
});
}
}
});
我的autoforms在提交时使用以下方法调用此方法:
{{#autoForm schema="Schema_Login" id="form_login" type="method" meteormethod="autoform_test_login"}}
....
提交此表单时,我收到此错误:
Error: No result from call to login {stack: (...), message: "No result from call to login"}
现在我打开浏览器控制台并输入:
Meteor.call('autoform_test_login');
我会得到同样的错误。
但是:当我在我的控制台中键入以下内容时,它可以正常工作(现在的错误是:找不到用户名):
Meteor.loginWithPassword('test', 'test', function(e) {
if (e) {
console.log(e);
}
});
我的方法完全没有别的,然后这个剪断了所以我问自己这里出了什么问题。
诗.: 我知道我将“test”添加为Username并将“test”添加为密码 - 仅用于测试。即使输入正确,错误总是相同的。
答案 0 :(得分:7)
好的,所以我得到了回复,现在我知道为什么这不能按预期工作。
loginWithPassord
只能在客户端执行。让我永远地想知道它为什么不起作用。
答案 1 :(得分:0)
确保autoform实际传递正确的值。如果你在架构设置中犯了错误,它会自动清除值(设置为undefined)而不会抛出错误。
我也不完全确定在这种情况下使用方法集是否合适,因为你想在客户端而不是服务器上进行登录调用(我认为)。
答案 2 :(得分:0)
确保您当前的Meteor实例与变量MONGO_URL指向的mongo数据库建立了活动连接。当此连接关闭或中断时,Meteor.loginWithPassword无法提供错误反馈。