Firebase-tools: Эмулятор функций поддерживает только последний триггер базы данных в реальном времени

Созданный на 18 июл. 2019  ·  6Комментарии  ·  Источник: firebase/firebase-tools

[ОБЯЗАТЕЛЬНО] Информация о среде


инструменты firebase:
firebase: 7.1.1
узел: v10.16.0
java: 11.0.2


Платформа:
macOS

[ОБЯЗАТЕЛЬНО] Тестовый пример

В этой строке указано firebase-tools / functionsEmulator.ts в dad143c42445056014f6f48cc9dfa13156e3c186 · firebase / firebase-tools · GitHub
, запрос на добавление нового триггера переопределяет предыдущие добавленные триггеры, а не добавляется в список

[ОБЯЗАТЕЛЬНО] Шаги по воспроизведению

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -X PUT -H 'авторизация: владелец-носитель' --data-binary '[{"name": "projects / test -project / locations / _ / functions / NewPost "," path ":" / posts / {ownerId} / {postId} "," event ":" sizes / google.firebase.database / eventTypes / ref.create "," topic ":" projects / test-project / themes / NewPost "}] '- сжатый
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'authorization: Bearer owner' --compressed
[{"имя": "проекты / тест-проект / местоположения / _ / функции / NewPost", "путь": "/ сообщения / {ownerId} / {postId}", "событие": "провайдеры / google.firebase. database / eventTypes / ref.create "," topic ":" projects / test-project / themes / NewPost "}]

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -X PUT -H 'авторизация: владелец-носитель' --data-binary '[{"name": "projects / test -project / locations / _ / functions / UpdatePost "," path ":" / posts / {ownerId} / {postId} "," event ":" Provider / google.firebase.database / eventTypes / ref.update "," topic ":" projects / test-project / themes / UpdatePost "}] '- сжатый
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'authorization: Bearer owner' --compressed
[{"имя": "проекты / тест-проект / местоположения / _ / функции / UpdatePost", "путь": "/ сообщения / {ownerId} / {postId}", "событие": "провайдеры / google.firebase. database / eventTypes / ref.update "," topic ":" projects / test-project / themes / UpdatePost "}]

[ОБЯЗАТЕЛЬНО] Ожидаемое поведение

Оба триггера базы данных будут добавлены и перечислены в эмуляторе базы данных.

[ОБЯЗАТЕЛЬНО] Фактическое поведение

Каждый вызов отменяет предыдущий вызов

emulator-suite database functions bug

Все 6 Комментарий

@gpfunk, спасибо, что сообщили об этом! Я исследую это сейчас и посмотрю, смогу ли я воспроизвести.

Подтверждено, что это ошибка, теперь нужно найти, где она обитает.

бог скорости :)

Хорошо, это одна из тех вещей, которые «работают как задумано, но все еще являются ошибкой». В основном код firebase-tools (как вы заметили) отправляет PUT всему ресурсу functionTriggers для каждой функции, которая его заменяет.

Что нам действительно нужно, так это операция «upsert», реализованная в эмуляторе RTDB, которую мы можем вызвать, используя имя триггера в качестве уникального идентификатора. Это то, что есть у Firestore. Мы поговорим об этом сегодня и, надеюсь, найдем решение.

Подумал, что это может быть так, спасибо за быстрый отзыв!

@IanWyszynski попытается добавить операцию "upsert".

Была ли эта страница полезной?
0 / 5 - 0 рейтинги