Firebase函数,从onCall获取哈希图数据

时间:2019-05-25 22:14:30

标签: android typescript firebase google-cloud-functions

我在Firebase函数中如何接收和使用哈希映射时遇到问题。我看到数据正在正确发送。但是使用它是一个问题。

我如何从Android平台发送数据

fun onStartChatClicked() {
    val functions = FirebaseFunctions.getInstance()
    val map = HashMap<String, String>()

    usersToChatWith.forEach {
        map.put(it.userId!!, it.username!!)
    }

    functions.getHttpsCallable("startChatWithUsers")
        .call(map)
        .continueWith {task ->
               if (task.isSuccessful) {

               } else {

               }
        }
}

我也尝试过使用hashMapOf()函数。以防万一:P

当我只是在firebase函数中打印接收数据时。我确实像一些典型的Json字符串一样得到它

{ '3SYIpex6u1Mx31j1UUngKAy95hq2': 'user1', JgoKrekU6nNusxeMBr6JAjkCReX2: 'user2' }

简化的Firebase功能代码

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

        /** A little code */

        for (let [userId, username] of data) {
            /** some code */
        }

       /** Some more code */

    })

问题出在函数无法遍历给定数据的问题上。因为如果我理解正确的话。它认为给定的数据不是地图。

1 个答案:

答案 0 :(得分:0)

根据问题中的代码,您似乎正在尝试通过获取对象中每个条目的键值对来迭代对象。

但是,您省略了将对象变成键值对集合所需的entries()调用。

为您的for循环尝试此操作:

for (let [userId, username] of data.entries()) {
  /** some code */
}