#firebase #google-cloud-firestore
# #огневая база #google-облако-firestore
Вопрос:
Я пытаюсь получить данные по датам и отобразить html в firestore, но у меня это не получается.
Порядок неправильный. Потому что данные сортируются по пользователям. Как мне получить данные по дате?
{
comments: {
comment_1: {
userRef: users/user_1,
body: "body",
createdAt: Timestamp,
},
comment_2: {
userRef: users/user_2,
body: "body",
createdAt: Timestamp,
},
comment_3: {
userRef: users/user_1,
body: "body",
createdAt: Timestamp,
},
},
users: {
user_1 : {
name: "test"
},
user_2 : {
name: "test"
},
}
}
db.collection('comments').orderBy('createdAt').get().then(snapshot=> {
const comment = snapshot.data();
comment.userRef.get().then(userSnapshot => {
const userData = userSnapshot.data();
const comment = document.getElementById('js-comment');
const element = document.createElement('div')
element.innerHTML = `<p>${comment.body}</p>`
comment.appendChild(element);
});
});
Ответ №1:
Вам необходимо отсортировать данные с помощью OrderBy по полю даты, как у вас есть в коде, однако у вас нет поля createdAt в предоставленной вами модели данных.
Если ваши данные комментариев выглядят следующим образом
comments: {
comment_1: {
userRef: users/user_1,
body: "body",
createdAt: Timestamp
},
comment_2: {
userRef: users/user_2,
body: "body",
createdAt: Timestamp
},
comment_3: {
userRef: users/user_1,
body: "body",
createdAt: Timestamp
},
Поле метки времени можно заполнить, попросив firestore заполнить поле с помощью Timestamp.now() при создании данных.
После того, как данные будут прочитаны, используйте OrderBy для комментариев. Вам нужно указать ВОЗРАСТАНИЕ, если вы хотите, чтобы данные были в порядке возрастания, тогда пользователи могут быть просмотрены, и данные должны отображаться в правильном порядке.
Подробнее об этом здесь https://firebase.google.com/docs/firestore/query-data/order-limit-data
Комментарии:
1. Спасибо, что ответили. извините, я уже добавил createdAt. Я просочился наружу.
2. Привет. не уверен, что утечка означает