如何在数据中将用户ID作为文档存储在Firebase上?

时间:2019-09-05 19:17:29

标签: javascript firebase vuejs2 google-cloud-firestore

我正在尝试获取文档中的名称。现在,文档ID是用户UID。我想获取UID,但是好像我的查询没有正确处理。我实际上正在做的是试图在.doc内部传递一个值,这似乎不起作用。

我尝试了db.collection('users')。doc(userUid),我尝试了.where(UserUid)。一直在尝试使用控制台对其进行调试,但是我只是在获取文档ref对象,好像没有什么不对。

我认为没有什么问题,因为如果我仅将代码以“ .collection('users')”的形式运行而没有.doc扩展名,则该代码将在所有集合中列出我想要的字段,我只是觉得很难时间了解如何通过查询从集合“用户”中的文档中获取userUid作为值。

非常感谢您的帮助。

欢呼

    created () {

      var auth = firebase.auth()
      var userUid = auth.currentUser.uid
      var db = firebase.firestore()
      const collection = db.collection('users')/*

                                         | This works without the
                                         | .doc extension */.doc(userUid)

      collection.onSnapshot(res => {
        const changes = res.docChanges()
          changes.forEach(change => {
            if (change.type === 'added') {
              this.items.push({
                ...change.doc.data(),
                id: change.doc.id
              })
            }
          })
        })
      },

1 个答案:

答案 0 :(得分:0)

经过一些实验,我找到了如何获取的解决方案: 集合>   用户UID>     (文档内的随机字段)

例如:

<template>

  <h1>

    {{ items.nameOfUser }}

  </h1>

</template>

<script>
export default {
  data: () => ({
    items: null
  }),
  async created () {
    const firestore = firebase.firestore()
    const docPath = firestore.doc('/users/' + firebase.auth().currentUser.uid)
    docPath.get().then((doc) => {
      if (doc && doc.exists) {
        this.nameOfUser = doc.data()
      }
    })
  },
}