返回未定义快照的 Firestore 查询Vue.js / Firestore / Vuefire

如何解决返回未定义快照的 Firestore 查询Vue.js / Firestore / Vuefire

我目前正在使用支持 vuefire 的 Firestore/Vue.js。

Firestore DB 只有一个集合,里面有几个用户

  • 用户
    • 001
      • 姓名:杰克
      • uid:{Firebase 身份验证 ID}
      • org_id:123
    • 002
      • 姓名:弗兰克
      • uid {Firebase 身份验证 ID}
      • org_id:456

在 Vue 组件中,我尝试查询数据库以使用身份验证 ID(当前存储在 Vuex Store 中)获取一个用户

<script>
import { db } from "../main.js";    
export default {
  data() {
    return {
      items: [] // to be used later
    };
  },created() {
    this.getServices();
  },methods: {
    getServices() {
      console.log(this.$store.state.user.uid);
      db.collection("users")
        //.doc("001")
        .where("uid","==",this.$store.state.user.uid)
        .get()
        .then((snapshot) => {
          console.log(snapshot);
          if (snapshot != null && snapshot.data != null) {
            const user = snapshot.data();
            // do something with document
            let org_id = user["org_id"];
            console.log("org id:" + org_id);
          } else {
            console.log("No data returned!");
          }
        });
    },},};
</script> 

代码总是返回一个空的快照。我已执行的检查:

  • 使用文档 ID 直接访问文档是可行的
  • this.$store.state.user.uid 设置正确
  • 对 where 子句中的 uid 进行硬编码会产生相同的错误

我是一个完全的初学者,但在我看来 where 子句不起作用。

解决方法

由于您使用 foo 定义了 Query,因此 db.collection("users").where("uid","==",this.$store.state.user.uid) 对象实际上是一个 QuerySnapshot 而不是 DocumentSnapshot

所以 snapshot 总是 snapshot.data != null,因为 false 没有这样的属性。对于 QuerySnapshot => 也是如此,它总是 snapshot.data() != null,因为 false 没有这样的方法

您应该使用 forEach() 方法循环 QuerySnapshot 或在 docs 属性上使用 QuerySnapshot,如 Vuefire example 中所示(请参阅“检索集合"):

map

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?