Ваш код должен работать, но документ testProducts/2222
должен уже существовать в БД.Документ для метода update()
гласит:
Обновление не будет выполнено, если его применить к документу, который не существует.
Вывызовет облачную функцию путем создания, изменения или удаления документа testProducts/1111
, см. документ здесь: https://firebase.google.com/docs/functions/firestore-events.
onWrite
: срабатывает при onCreate
, onUpdate
или onDelete
срабатывает.
Однако вы можете немного изменить свой код таким образом, чтобы вместо этого возвращалось обещание, возвращаемое асинхронным методом update()
значения.
exports.updateProduct = functions.firestore.document('testProducts/1111').onWrite((change, context) => {
const newValue = change.after.data();
return admin.firestore().doc('testProducts/2222').update({
description: newValue.name
})
});
Обратите внимание, что при использовании облачной функции, запускаемой в фоновом режиме с триггером onWrite()
, клиент не должен получать никакого ответа: процесс происходит в фоновом режиме.Поэтому 'status 200'
никогда не возвращается клиенту, и если вы не отправляете новый запрос к базе данных, «последняя информация о '2222'
не загружена».
Если вы хотите получить ответ на клиентеКроме того, вы можете:
- настроить прослушиватель с помощью метода
onSnapshot()
, чтобы прослушать изменения в документе testProducts/2222
.С помощью прослушивателя «последняя информация о '2222'
» будет автоматически «загружена» для повторного использования ваших слов. - Используйте HTTP Cloud Function или Функция вызываемого облака , которую вы запускаете от клиента и которая отправляет ответ.