Я занимаюсь разработкой веб-приложения для Firebase / firestore, в котором пользователи могут входить и писать свои собственные сообщения. Данные хранятся следующим образом:
-Пользовательская информация хранится как под коллекцией ('user'). Do c ('uid').
-Информация о публикациях написанное пользователем хранится в коллекции ('post'). do c ('postid'), а do c имеет поля 'userinfo' и 'uid'. Поле 'userinfo' содержит точную копию того, что хранится в 'uid' do c, просто в формате объекта.
Вот операции, которые я хочу сделать:
Когда пользователь изменяет данные, эти изменения отражаются в документе.
Найдите все сообщения, которые пользователь написал на основе данных 'uid', а затем обновите userinfo в этих данных.
Последняя часть сложна для меня. Документация Firebase охватывает ситуации, когда ссылки в значительной степени уста- навливаются c, т.е. вы знаете точный путь для записи / обновления. То, что я пытаюсь сделать, это найти набор документов, который не обязательно должен быть c, а затем обновить каждый из них.
Вот код, который я написал для этой работы. Первая часть работает без проблем. Конечно, вторая часть не работает. :) Каков будет код для выполнения второй части?
const update = () => {
//This part is for updating user information. This works without any problem.
firebase.firestore().collection('user').doc(user.uid).update({
username: username1,
nickname: nickname1,
intro: intro1
})
.then(()=>{
//This part is for updating all of the document that the user has written based on 'uid' value. This doesn't work.
//Below code is probably way off, but it shows where I am going and what I am trying to do.
firebase.firestore().collection('post').where('uid','==',user.uid).get()
.then((querysnapshot)=>{
querysnapshot.forEach((doc)=>{
let ref=firebase.firestore().collection('post').doc(doc.id);
ref.update({
userinfo: {nickname:nickname1,username:username1,intro:intro1}
})
})
})
}).then(()=>{
alert("Successfully updated!");
window.location.href='/'+username1;
}).catch((error)=>{
alert("Error!");
})
}
Заранее большое спасибо!