#javascript #firebase #google-cloud-firestore
#javascript #firebase #google-облако-firestore
Вопрос:
Справочная информация: Вход в систему работает отлично, данные организованы следующим образом [![это][1]][1] [1]: https://i.stack.imgur.com/f9Cjq.png Каждый раз, когда я захожу в одну из 2 созданных мной учетных записей и перехожу на страницу настроек, она показывает только информацию об одном конкретном пользователе. Наконец, в .collection(«userInfo») я добавил .doc(user.uid), и в нем говорилось, что функция forEach была недействительной. Вот код. Кто-нибудь может сказать мне, что я делаю не так?
var auth = firebase.auth().currentUser;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
db = firebase.firestore()
db
.collection("userInfo")
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
// console.log(user.uid, " => ", doc.data());
console.log(user.uid)
var email = doc.data().email;
var bio = doc.data().bio;
var downloadURL = doc.data().downloadURL;
document.getElementById("email").placeholder = email;
document.getElementById("bio").placeholder = bio;
myimg.src = downloadURL;
}
})
Комментарии:
1. При поиске по определенному документу результат не является массивом
2. firebase.google.com/docs/firestore/query-data/get-data
3. Я почти уверен, что он не выдает массив. Но я почти уверен, что он просто выбирает одного из пользователей из списка идентификаторов документа.
4. Но почему тогда вы ожидаете, что функция forEach будет в результате как метод?
Ответ №1:
var auth = firebase.auth().currentUser;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
db = firebase.firestore();
db.collection("userInfo").doc(user.uid).get()
.then(function (doc) {
if(doc.exists) {
var email = doc.data().email;
var bio = doc.data().bio;
var downloadURL = doc.data().downloadURL;
document.getElementById("email").placeholder = email;
document.getElementById("bio").placeholder = bio;
myimg.src = downloadURL;
}
});
}
});
Комментарии:
1. Это имеет смысл, спасибо. Я немного повторил это и вижу, что я ошибался в использовании функции forEach, которая не позволяла мне использовать функцию .doc(), и я не использовал if (doc.exists). Почему вы это использовали? И большое спасибо!
2. Чтобы убедиться, что объект существует, иногда он не существует, потому что другой пользователь удаляет его