firebase 使用Vue.js从Firestore获取单个记录

rdlzhqv9  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(152)

我试图从Firestore数据库中获取一条记录,我正在从路径中提取ID,但它似乎不起作用。
你能看到我做错了什么吗,
如果我运行下面的代码

created() {
     //fetch data from firestore
   let ref = db.collection('post').doc(this.$route.params.id)
    ref.get()
    .then(snapshot => {  //DocSnapshot
        console.log(snapshot.data)
          if (doc.exists) {
            // doesnt run
            console.log('test')
              let post = snapshot.data()
          } else {
              // snapshot.data() will be undefined in this case
              // also doesn't run
              console.log("No such document!");
          }  
    })
  },

字符串
我在控制台中得到以下内容

function (options) {
        validateBetweenNumberOfArgs('DocumentSnapshot.data', arguments, 0, 1);
        options = validateSnapshotOptions('DocumentSnapshot.data', options);
        return !this._document
            ? undefined
            : this.convertObject(this._document.data, FieldValueOptions.fromSnapshotOptions(options, this._firestore._areTimestampsInSnapshotsEnabled()));
    }

o7jaxewo

o7jaxewo1#

通过执行let ref = db.collection('post').doc(this.$route.params.id),您可以得到一个DocumentReference,详见此处文档。
然后在这个DocumentReference上执行get(),你会得到一个DocumentSnapshot,就像这里详细描述的那样,而不是一个QuerySnapshot
因此,您应该通过data()方法(或者get(<field>)获取特定字段)来获取doc数据,而不是通过snapshot.forEach(doc => {})QuerySnapshot应该在QuerySnapshot上使用。
换句话说,做如下事情:

let ref = db.collection('post').doc(this.$route.params.id)
ref.get()
.then(snapshot => {  //DocSnapshot
      if (snapshot.exists) {
          let post = snapshot.data()
      } else {
          // snapshot.data() will be undefined in this case
          console.log("No such document!");
      }  
})

字符串

相关问题