Firebase-целевое поле документа Firestore с облачными функциями
при использовании облачных функций с базой данных Firebase в реальном времени вы можете нацелить определенное поле с облачной функцией. Например, учитывая эту структуру JSON, я мог бы нацелиться, когда поле электронной почты user1 изменилось с ('/user/{userId}/email').onUpdate
функции облака.
{
"user": {
"user1": {
"name": "John Doe",
"phone": "555-5555",
"email": "john@gmail.com"
}
}
}
теперь с Firestore кажется, что я не могу нацелиться на конкретное поле и могу нацеливать только документы. Если это так, функция Firestore cloud для таргетинга поля электронной почты должна выглядеть так это ('/user/{userId}').onUpdate
, и огонь каждый раз, когда любой документ в user
коллекция изменилась. Это приведет к тому, что многие функции облака будут запущены впустую. Это как Firestore работ и элегантно обойти его?
1 ответов
вы правы, из-за различных моделей данных Cloud Firestore позволяет запускать облачные функции только на событиях уровня документа, а не на уровне поля.
один из методов-хранить электронную почту в отдельном документе (например, в подколлекции, называемой электронной почтой), поэтому обновление электронной почты-это только изменение, которое будет срабатывать. Это требует, чтобы вы читали дополнительный документ каждый раз, когда вам нужно электронное письмо.
другой подобный метод должен все еще иметь его в том же документе, но также запишите его в подколлекцию в качестве второй записи для запуска функции. Используйте электронную почту в качестве документа, и у меня есть поле метки времени в документе, чтобы упростить очистку старого документа (выберите самый старый документ электронной почты для удаления, возможно, даже в функции)