инструменты 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 "}]
Оба триггера базы данных будут добавлены и перечислены в эмуляторе базы данных.
Каждый вызов отменяет предыдущий вызов
@gpfunk, спасибо, что сообщили об этом! Я исследую это сейчас и посмотрю, смогу ли я воспроизвести.
Подтверждено, что это ошибка, теперь нужно найти, где она обитает.
бог скорости :)
Хорошо, это одна из тех вещей, которые «работают как задумано, но все еще являются ошибкой». В основном код firebase-tools
(как вы заметили) отправляет PUT
всему ресурсу functionTriggers
для каждой функции, которая его заменяет.
Что нам действительно нужно, так это операция «upsert», реализованная в эмуляторе RTDB, которую мы можем вызвать, используя имя триггера в качестве уникального идентификатора. Это то, что есть у Firestore. Мы поговорим об этом сегодня и, надеюсь, найдем решение.
Подумал, что это может быть так, спасибо за быстрый отзыв!
@IanWyszynski попытается добавить операцию "upsert".