【问题标题】:Trouble with accessing Firebase Cloud Firestore访问 Firebase Cloud Firestore 时遇到问题
【发布时间】:2020-04-04 19:39:53
【问题描述】:

我正在使用 Cloud Firestore,但在访问简单数据库中的值时遇到了一些问题。

Here is how the database is structured

这是我用来访问数据库中“basementER-status”字段的代码。

//current status value is pulled from database
  function getRawStatus ()
  {
    return db.collection("rooms").doc("roomsDoc").get().then(function(doc) {
      console.log(doc.data()); 
      console.log(doc.data().basementER-status);
      return doc.data().basementER-status;
    });
  }

对于第一个console.log,这会打印到控制台:

{1ER-status: 0, 2ER-status: 0, basementER-status: 0}
1ER-status: 0
2ER-status: 0
basementER-status: 0
__proto__: Object

这是需要从数据库中获取的正确文档,因此我知道我的部分代码是正确的。

但是,第二个 console.log 将 NaN 打印到控制台。

这里发生了什么?我不明白。我以前在 Cloud Firestore 中访问过这样的字段,它一直有效。

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    对于您的第二个console.log 语句,您正在尝试访问对象中的特定参数,因此您应该使用这个:

         console.log(doc.data()["basementER-status"]);
    

    欲了解更多信息,请访问:firestore adding data link

    【讨论】:

      【解决方案2】:

      问题在于 JavaScript 解析语句的方式。这一行:

      console.log(doc.data().basementER-status);
      

      实际上是在doc.data().basementER 和变量status 的值之间进行数学减法。这不是你想要的。

      如果您想要包含 JavaScript 运算符或其他特殊字符的字段的值,则必须使用不同的语法:

      const data = doc.data();
      console.log(data['basementER-status']);
      

      方括号允许您提供任意字符串来查找对象中的名称属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 2020-09-06
        • 1970-01-01
        • 2020-10-17
        • 2020-02-01
        • 2018-09-15
        • 1970-01-01
        相关资源
        最近更新 更多