Javascript 未捕获类型错误:无法读取属性';获取';未定义错误的定义
我正在尝试使用用户类的电子邮件或用户名登录。但是,当我查询电子邮件并尝试Javascript 未捕获类型错误:无法读取属性';获取';未定义错误的定义,javascript,parse-platform,Javascript,Parse Platform,我正在尝试使用用户类的电子邮件或用户名登录。但是,当我查询电子邮件并尝试 object.get("username") 我收到上面的错误消息。奇怪的是,当我在调试器中测试助手函数getUsername时,它工作得很好 function getUsername(email) { var query = new Parse.Query(Parse.User); query.equalTo('email', email); query.first({ success: func
object.get("username")
我收到上面的错误消息。奇怪的是,当我在调试器中测试助手函数getUsername时,它工作得很好
function getUsername(email) {
var query = new Parse.Query(Parse.User);
query.equalTo('email', email);
query.first({
success: function(object) {
console.log(object.get("username"));
return object.get("username");
},
error: function(user, error) {
console.log("no email");
}
});
}
function signIn(usernameOrEmail, password) {
//if not email sign in with username
if (usernameOrEmail.indexOf("@") == -1) {
Parse.User.logIn(usernameOrEmail, password, {
success: function(user) {
console.log("Logged in!");
},
error: function(user, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
//query for username from email and signin
else {
var username = getUsername(usernameOrEmail);
Parse.User.logIn(username, password, {
success: function(user) {
console.log("Logged in!");
},
error: function(user, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
}
query.first
是一个异步函数。要使用它返回的值,必须在success:
回调函数中执行。因此,将callbak传递给执行登录的getUsername
function getUsername(email, callback) {
var query = new Parse.Query(Parse.User);
query.equalTo('email', email);
query.first({
success: function(object) {
if (object) {
console.log(object.get("username"));
callback(object.get("username"));
} else {
console.log("email not found");
}
},
error: function(user, error) {
console.log("no email");
}
});
}
function signIn(usernameOrEmail, password) {
//if not email sign in with username
if (usernameOrEmail.indexOf("@") == -1) {
Parse.User.logIn(usernameOrEmail, password, {
success: function(user) {
console.log("Logged in!");
},
error: function(user, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
//query for username from email and signin
else {
getUsername(usernameOrEmail, function(username) {
signIn(username, password);
});
}
}
getUsername
不返回任何内容。return
语句位于异步回调函数中。如果我不返回任何内容,如何设置username=getUsername(email)?您需要将回调函数传递给getUsername
,它应该在success函数中调用它。我可以将查询放在signIn函数中吗?我不知道回调函数是如何工作的。success:
之后的所有函数都是回调函数。不幸的是,当我用我的代码替换你的代码时,我仍然收到一个错误,说signIn没有定义。感谢迄今为止所做的一切,如有任何其他帮助,将不胜感激!检查拼写错误,因为我不明白为什么会发生这种情况。函数名的作用域包括它的函数体。你有一个公共URL我可以试试吗?没有,我没有公共URL,我只会查找输入错误。谢谢你!错误在最后一行中,表示意外标识符