无法获取 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.