簡體   English   中英

雲 function 發送 json 作為字符串

[英]Cloud function sending json as string

我開始學習雲函數。 我希望實現的是將 json 發送到雲 function 並獲取所有與我在 json 中發送的電話號碼相同的文檔。

雲 function:

exports.getUsers = functions.https.onRequest(async (request, response) => {
const data = request.body.data;
if (data !== null && data.users !== null) {
const users = data.users;
const phonelist = users.map(user => user.phone.toString());
const userlist = []

const snapshot = await db.collection("users").get()
snapshot.docs.forEach((userDoc) => {
    const phone = userDoc.get("phone")
    if(phone === null) return;
    const isContain = phonelist.reduce((acc, num) => acc || phone.includes(num), false)
    if(isContain) {
        userlist.push(userDoc.data())
    }
})
response.status(200).json({result: userlist})
}     else{
   response.sendStatus(403)
}
});

馬雲撥打Android:

  private fun addMessage(): Task<String>? {
    // Create the arguments to the callable function.
    val data = "{\n" +
            "  \"data\": {\n" +
            "    \"users\": [\n" +
            "      {\n" +
            "        \"phone\": 55512345\n" +
            "      },\n" +
            "      {\n" +
            "        \"phone\": 972525276676\n" +
            "      },\n" +
            "      {\n" +
            "        \"phone\": 55512347\n" +
            "      }\n" +
            "    ]\n" +
            "  }\n" +
            "}"

    functions.getHttpsCallable("getUsers")
        .call(data)
        .addOnFailureListener {
            Log.d("DTAG", it.toString())
        }
        .addOnSuccessListener {
            Log.d("DTAG","Ok: ${it.data.toString()}")
        }

   return null
}

我從雲 function 收到錯誤:無法讀取未定義的屬性(讀取“地圖”)

您不應將原始字符串作為 JSON 提供給 Firebase SDK。相反,如果您希望它自動將其轉換為 JSON Object,請提供Map<String, Object>文檔中有一個示例。 Firebase 在兩端處理 JSON 輸入和 output,因此您只需處理來自 JSON 的本地語言數據結構,這比手動構建 JSON 更方便且更不容易出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM