在 Firebase Realtime Database 或 Firestore 中,数据的存储和检索方式可能会影响你获取的数据结构。如果你希望从 Firebase 中取回一个数组而不是对象,有几种方法可以实现这一点。以下是一些常见的解决方案:
在 Firebase Realtime Database 中,直接存储数组可能会导致一些问题,因为 Firebase 会将数组转换为对象,并使用索引作为键。如果你希望取回一个数组,可以考虑以下方法:
// 存储数据
const data = {
0: "item1",
1: "item2",
2: "item3"
};
firebase.database().ref('path/to/data').set(data);
// 取回数据
firebase.database().ref('path/to/data').once('value').then(snapshot => {
const data = snapshot.val();
const array = Object.keys(data).map(key => data[key]);
console.log(array); // ["item1", "item2", "item3"]
});
// 存储数据
const data = {
items: ["item1", "item2", "item3"]
};
firebase.database().ref('path/to/data').set(data);
// 取回数据
firebase.database().ref('path/to/data').once('value').then(snapshot => {
const data = snapshot.val();
const array = data.items;
console.log(array); // ["item1", "item2", "item3"]
});
Firestore 更适合存储和检索数组,因为它支持原生数组类型。
在 Firestore 中,你可以直接存储和检索数组。
// 存储数据
const data = ["item1", "item2", "item3"];
firebase.firestore().collection('collectionName').doc('documentId').set({ items: data });
// 取回数据
firebase.firestore().collection('collectionName').doc('documentId').get().then(doc => {
if (doc.exists) {
const data = doc.data();
const array = data.items;
console.log(array); // ["item1", "item2", "item3"]
} else {
console.log("No such document!");
}
});
领取专属 10元无门槛券
手把手带您无忧上云