我正在尝试按日期获取数据并在Firestore中呈现html, 但是我不能。
顺序错误。 因为,数据是按用户排序的。 如何按日期获取数据?
{
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);
});
});
答案 0 :(得分:0)
您需要像在代码中一样使用orderBy日期字段对数据进行排序,但是,在提供的数据模型中没有创建字段。
如果您的评论数据如下
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
},
可以通过在创建数据时使用Timestamp.now()使Firestore填充该字段来填充timestamp字段。
使用orderBy读取注释后,将读取数据。如果要使数据按升序排列,则需要指定ASCENDING,然后可以查询用户,并且数据应以正确的顺序出现。
https://firebase.google.com/docs/firestore/query-data/order-limit-data
对此进行了更多讨论