空对象数组与对象数组 - Firebase和Polymer

时间:2018-01-27 01:02:04

标签: javascript arrays firebase polymer google-cloud-firestore

我正在尝试使用Polymer Shop模板创建在线商店,用Firebase Cloud Firestore中的对象替换标准类别对象。初始化数据库后,我正在尝试使用这些对象在抽屉菜单中显示类别列表。

这个顶级示例适用于Cloud Firestore。除了代码之外,您还可以通过屏幕截图看到当控制台记录categoryList时控制台打印出来的内容。

Cloud Firestore Console Output

let categoryList = []
firebase.firestore().enablePersistence()
      .then(function() {
          // Initialize Cloud Firestore through firebase
      var db = firebase.firestore();

      db.collection("product-categories").where('active', '==', true)
        .get()
        .then(function(querySnapshot) {
            querySnapshot.forEach(function(doc) {
                    // doc.data() is never undefined for query doc snapshots
            categoryList.push(doc.data())
            });
          })
            .catch(function(error) {
                console.log("Error getting documents: ", error);
          });  
      });

这是原始Polymer Shop模板中的代码,以及显示categoryList打印到控制台时输出的屏幕截图。

Polymer Shop Template Console Output

(function() {
let categoryList = [
  {
    name: 'oils_and_tinctures',
    title: 'Oils and Tinctures'
  },
  {
    name: 'concentrates',
    title: 'Concentrates'
  },
  {
    name: 'Vape',
    title: 'Vape'
  },
  {
    name: 'topicals',
    title: 'Topicals'
  },
  {
    name: 'pet_products',
    title: 'Pet Products'
  }
];

似乎我需要一个空的对象数组,然后填充这些对象。如何从Firebase Cloudstore获取数据以匹配原始模板数据的格式?

提前感谢任何人的帮助!

1 个答案:

答案 0 :(得分:0)

querySnapshot.forEach(function (doc) => {
    categoryList.push({ name: doc.name, title: doc.title }) 
}).

OR

function CategoryData(name, title) {
    this.title = title;
    this.name = name;
}

querySnapshot.forEach(function (doc) => {
    categoryList.push(new CategoryData(doc.name, doc.title)) 
})

使用第二种方式,您可以定义您喜欢的结构。