无法获取 Query.find() 到 return 数据,即使我知道它存在
Unable to get Query.find() to return data, even though I know it exists
在我托管在 Heroku 上的 Parse 服务器中,我无法查询 return 数据。
这是我的代码:
Parse.Cloud.define("findUser", function(request, response) {
console.log("starting")
var userQuery = new Parse.Query(Parse.User);
userQuery.useMasterKey = true;
userQuery.equalTo("objectId","fZpDmQQEVt")
userQuery.find().then( function(result) {
console.log("Inside then with result: " + result.length);
foundUser = result;
if(foundUser.length != 0){
//return a promise here?
console.log("Found a user, user is: " + foundUser)
} else {
console.log("did not find a foundUser")
}
return foundUser
})
console.log("exiting")
});
我的输出是这样的:
2019-08-11T18:18:34.885630+00:00 app[web.1]: starting
2019-08-11T18:18:34.887246+00:00 app[web.1]: exiting
2019-08-11T18:18:34.888799+00:00 app[web.1]: info: Ran cloud function findUser for user undefined with:
2019-08-11T18:18:34.888802+00:00 app[web.1]: Input: {}
2019-08-11T18:18:34.888804+00:00 app[web.1]: Result: undefined {"functionName":"findUser","params":{}}
2019-08-11T18:18:34.922537+00:00 app[web.1]: Inside then with result: 0
2019-08-11T18:18:34.922609+00:00 app[web.1]: did not find a foundUser
从日志中可以清楚地看出它没有找到用户并 returning 了它。但是,为了这次测试,我硬编码了我的个人 objectId,我知道这是正确的。在我的原始代码中,当我找不到用户时,我创建了它。它永远不会找到用户,然后在尝试创建记录时总是出错,因为它已经存在。你能帮我理解为什么这不是 return 我的用户使用硬编码查询吗?
试试这个:
Parse.Cloud.define("findUser", async request => {
const userQuery = new Parse.Query(Parse.User);
const foundUser = await userQuery.get('fZpDmQQEVt', { useMasterKey: true });
console.log("Found a user, user is: " + foundUser);
return foundUser;
});
return userQuery.find().then( function(result) {
您应该 return 返回 findUser 函数的承诺。或使其异步并等待内部查找 returns.
在我托管在 Heroku 上的 Parse 服务器中,我无法查询 return 数据。
这是我的代码:
Parse.Cloud.define("findUser", function(request, response) {
console.log("starting")
var userQuery = new Parse.Query(Parse.User);
userQuery.useMasterKey = true;
userQuery.equalTo("objectId","fZpDmQQEVt")
userQuery.find().then( function(result) {
console.log("Inside then with result: " + result.length);
foundUser = result;
if(foundUser.length != 0){
//return a promise here?
console.log("Found a user, user is: " + foundUser)
} else {
console.log("did not find a foundUser")
}
return foundUser
})
console.log("exiting")
});
我的输出是这样的:
2019-08-11T18:18:34.885630+00:00 app[web.1]: starting
2019-08-11T18:18:34.887246+00:00 app[web.1]: exiting
2019-08-11T18:18:34.888799+00:00 app[web.1]: info: Ran cloud function findUser for user undefined with:
2019-08-11T18:18:34.888802+00:00 app[web.1]: Input: {}
2019-08-11T18:18:34.888804+00:00 app[web.1]: Result: undefined {"functionName":"findUser","params":{}}
2019-08-11T18:18:34.922537+00:00 app[web.1]: Inside then with result: 0
2019-08-11T18:18:34.922609+00:00 app[web.1]: did not find a foundUser
从日志中可以清楚地看出它没有找到用户并 returning 了它。但是,为了这次测试,我硬编码了我的个人 objectId,我知道这是正确的。在我的原始代码中,当我找不到用户时,我创建了它。它永远不会找到用户,然后在尝试创建记录时总是出错,因为它已经存在。你能帮我理解为什么这不是 return 我的用户使用硬编码查询吗?
试试这个:
Parse.Cloud.define("findUser", async request => {
const userQuery = new Parse.Query(Parse.User);
const foundUser = await userQuery.get('fZpDmQQEVt', { useMasterKey: true });
console.log("Found a user, user is: " + foundUser);
return foundUser;
});
return userQuery.find().then( function(result) {
您应该 return 返回 findUser 函数的承诺。或使其异步并等待内部查找 returns.