我正在尝试按日期和时间对我的React(Firebase)应用程序中的注释进行排序。
我已经尝试了orderByChild(“ date”),该方法不适用于我的项目。
componentDidMount() {
const commentsRef = firebase.database().ref("Comments/News").orderByChild("date").limitToLast(5);
commentsRef.on("value", snapshot => {
let symptoms = snapshot.val();
let newState = [];
for (let item in symptoms) {
newState.push({
id: item,
comment: symptoms[item].comment,
date: symptoms[item].date
});
}
这是我的Firebase数据库设置:
答案 0 :(得分:0)
一旦调用snapshot.val()
,您将丢失所调用快照的所有订购信息。这是因为JSON对象中的属性没有定义的顺序。
因此,您需要使用内置的DataSnapshot.forEach()
函数遍历匹配的节点:
const commentsRef = firebase.database().ref("Comments/News").orderByChild("date").limitToLast(5);
commentsRef.on("value", snapshot => {
let newState = [];
snapshot.forEach(symptomSnapshot => {
let symptom = symptomSnapshot.val();
newState.push({
id: symptomSnapshot.key,
comment: symptom.comment,
date: symptom.date
});
});
// TODO: this is where you'll typically call setState(...)
});