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

时间:2018-07-29 10:39:52

标签: firebase vuejs2 google-cloud-firestore

我正在尝试从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()));
    }

1 个答案:

答案 0 :(得分:2)

通过let ref = db.collection('post').doc(this.$route.params.id),您将获得DocumentReference,如文档here中所述。

然后在此get()上执行DocumentReference,您会得到一个DocumentSnapshot(详细介绍here),而不是QuerySnapshot

因此,您应该通过data()方法获取文档数据(或通过get(<field>)获取特定字段),而不是通过在{{3 }}。

换句话说,请执行以下操作:

snapshot.forEach(doc => {})