【问题标题】:Firebase - Get field using variable as propertyFirebase - 使用变量作为属性获取字段
【发布时间】:2021-10-23 00:04:31
【问题描述】:

我正在尝试使用变量从“doc.data”中获取一个字段,问题是我想用不同的字段名称重用该函数。

这是代码:

        btnsEditvalue.forEach((btn) => {
            btn.addEventListener("click", async (e) => {
              try {
                propToEdit = e.target.dataset.prop;
                const doc = await getElement(e.target.dataset.id, col);
                const element = doc.data();
                console.log(element.propToEdit)
                editElement.value = element.e.target.dataset.prop;
                id = doc.id; 
              } 
              catch {
                console.log("error");
              }
            });
        });

输出未定义,因为“propToEdit”不是我数据库中的字段。

【问题讨论】:

    标签: javascript firebase web


    【解决方案1】:

    您可以尝试使用括号表示法而不是点表示法传递动态键。

    参考javascript对象property accessors

    const element = doc.data()
    const ELEMENT_KEY: string = 'propToEdit'
    console.log(element[ELEMENT_KEY])
    

    【讨论】:

      【解决方案2】:

      您可以使用自定义名称动态访问字段

      fieldName = "stringValue"
      element[fieldName]
      

      这完全取决于维护doc.data() 中的doc 的位置

      你也可以将它包装成一个函数,这将返回值或 null。 您可以将 null 替换为您想要的任何其他默认值。

      function getField(fieldName, doc){
          return doc.data()[fieldName] || null;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多