【问题标题】:Cloud Function returns null on android appCloud Function 在 Android 应用上返回 null
【发布时间】:2019-09-18 17:12:23
【问题描述】:

我在Android App上调用了一个Cloud Function,返回值为nullonRequest时可以正常工作em> 用于代替浏览器中的 onCall,但是当使用 OnCall 从 Android 应用程序调用该函数时,它返回 null

代码:

export const userExistsOrNot = functions.https.onCall((data, context) => {

const driver = neo4j.v1.driver("uri", neo4j.v1.auth.basic("usr", "pwd"), {connectionTimeout: 30 * 1000})

const session = driver.session()

  session.readTransaction(wrte=>{
    let r : any

    if(context.auth){
      r = wrte.run('MATCH (a:Person) WHERE a.userid ={userid} RETURN exists(a.userid)', 
      {userid: context.auth.uid})
    }

   return r as neo4j.v1.Result
  }

)

.then(result => {

    session.close();

    driver.close();

    if(result.records[0] == null){

      return    {
        "data": {
            "text": 0
        }
    }
    } else {
      return {
        "data": {
            "text": 1
        }
    }
    }


 })
 .catch(error => {
  session.close();
  console.log(error);
  driver.close()
  throw new functions.https.HttpsError(error,"some error");
});

});

【问题讨论】:

    标签: typescript firebase google-cloud-functions


    【解决方案1】:

    在所有异步工作完成后,您的顶级回调函数没有返回一个用值解析的承诺,以发送给客户端。事实上,它根本没有返回任何承诺。您需要编写代码,以便将承诺返回给客户,我建议从更简单的东西开始,以便了解它是如何工作的。

    【讨论】:

    • 好的。 session.readTransaction 返回一个承诺,并在其前面放了一个 return,现在它可以工作了 :) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-02-20
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多