Функция Firebase, получить данные хэш-карты из onCall - PullRequest
0 голосов
/ 26 мая 2019

У меня проблема с тем, как я получаю и использую хеш-карты в функции 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' }

Код функции упрощенной пожарной базы

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 голосов
/ 26 мая 2019

Исходя из кода в вашем вопросе, похоже, что вы пытаетесь выполнить итерации объекта, получая пару ключ-значение каждой записи в объекте.

Однако вы пропустили вызов entries(), необходимый для превращения объекта в набор пар ключ-значение.

Попробуйте это для цикла for:

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