首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Firebase:如何取回数组而不是对象

在 Firebase Realtime Database 或 Firestore 中,数据的存储和检索方式可能会影响你获取的数据结构。如果你希望从 Firebase 中取回一个数组而不是对象,有几种方法可以实现这一点。以下是一些常见的解决方案:

Firebase Realtime Database

存储数据为数组

在 Firebase Realtime Database 中,直接存储数组可能会导致一些问题,因为 Firebase 会将数组转换为对象,并使用索引作为键。如果你希望取回一个数组,可以考虑以下方法:

  1. 使用对象存储数组:将数组存储为对象,并在取回数据时将其转换回数组。
代码语言:javascript
复制
// 存储数据
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"]
});
  1. 使用数组标识符:在存储数据时添加一个标识符,表明这是一个数组。
代码语言:javascript
复制
// 存储数据
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 更适合存储和检索数组,因为它支持原生数组类型。

存储数据为数组

在 Firestore 中,你可以直接存储和检索数组。

代码语言:javascript
复制
// 存储数据
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!");
  }
});

总结

  • Firebase Realtime Database:由于 Firebase Realtime Database 会将数组转换为对象存储,建议使用对象存储数组,并在取回数据时将其转换回数组。
  • Firestore:Firestore 支持原生数组类型,可以直接存储和检索数组。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券