在 parse.com 云代码中,我有一个非常简单的函数“IsNameAlreadyTaken”,但无论我传递什么“用户名”,总是会执行“成功”。这是为什么?
Parse.Cloud.define("IsNameAlreadyTaken", function(request, response) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.User);
console.error("Please log request.params.username: " + request.params.username + "<++++");
query.equalTo("username", request.params.username);
query.first({
success: function(user) {
response.success("user was found." + user);
},
error: function(error) {
response.error("Could not find user." + error);
}
});
});
这里我使用已使用的用户名进行测试:
curl -X POST \
-H "X-Parse-Application-Id: uOXz....rPt" \
-H "X-Parse-REST-API-Key: GAv...SmK" \
-H "Content-Type: application/json" \
-d '{"username": "UsernameAlreadyTaken"}' \
https://api.parse.com/1/functions/IsNameAlreadyTaken
响应很好:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 34 --:--:-- --:--:-- --:--:-- 68{"result":"user was found. [object Object]"}
问题在于,确切的行为是当用户名不存在时:
curl -X POST \
-H "X-Parse-Application-Id: uOXz....rPt" \
-H "X-Parse-REST-API-Key: GAv...SmK" \
-H "Content-Type: application/json" \
-d '{"username": "nonExistedUsername"}' \
https://api.parse.com/1/functions/IsNameAlreadyTaken
并且响应是相同的:WTF!!!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 61 --:--:-- --:--:-- --:--:-- 105{"result":"user was found. undefined"}
知道发生了什么吗?这是 Parse.com 中的错误吗?
最佳答案
疯狂猜测:我认为当 user 不存在时,你会得到 user === undefined
信息(如果存在,你会得到 user 对象),这样你就有了你需要的信息。
error:
仅当连接失败或类似情况时才可能调用回调。在 JavaScript 中的许多情况下,这是一种标准处理。
关于javascript - 为什么 Parse.Query 总是成功,即使不成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839120/