Я хочу создать новый узел в базе данных реального времени firebase при создании поля в существующем документе Firestore.
Я пробовал это:
exports.addUserCredentials = functions.firestore
.document(`Users/{UserID}/{username}`)
.onCreate((snapshot, context) => {
const newUserData = snapshot.data()
const newUserUsername = newUserData
const newUserUidDoc = context.params.UserID
return admin.database().ref(`/userCredentials/${newUserUsername}`).set({"UID": newUserUidDoc})
})
Я искал в Интернете, я увидел, что путь должен быть направлен только к документу, а не к коллекции. НО username
в пути - ПОЛЕ в документе.
Я получаю эту ошибку при развертывании, и я видел все подобные вопросы, но те, на которые я не совсем ответил:
! functions: failed to update function addUserCredentials
HTTP Error: 400, The request has errors
Причина в том, что я не могу изменить мой путь на Users/{UserID}
, что сделает мой код безупречным, если поля документа не добавляются сразу.
Вот снимок экрана с моей структурой пожарного депо:
4 поля документа обновляются в 2 пакетах.
Сначала добавляются поля EMAIL и timeCreated, и они создают документ. С другой стороны, phoneData и username являются полями, СОЗДАННЫМИ [не обновлены] после 5 секунд электронной почты и timeCreated.
Так что, если я использую onCreate()
на пути Users/{UserID}
, он вернет UNDEFINED моя база данных реального времени в качестве поля имени пользователя в этот момент ОТСУТСТВУЕТ.
Можно ли применить onCreate()
к указанному c полю документа?
[ I Я делаю это для создания отдельного узла, который содержит имя пользователя и UID, это для проверки, существует ли имя пользователя, когда новый пользователь пытается зарегистрироваться ] Так, если узел создается со значением undefined
, это будет выпуск.
Будет так: