如何使用.orderby()通过时间戳对Firebase数组中的项目进行排序

时间:2019-09-09 18:05:48

标签: javascript firebase vue.js google-cloud-firestore vuex

我正在尝试使Vue.js应用程序能够从Firestore数据库检索项目,并按时间戳顺序排列这些项目。通常,我会使用:

let ref = db.collection('users').orderBy('timestamp')

...如果时间戳只是一个文档项目。但是,我设置了此应用程序,因此timestamp是名为events的Firebase文档数组项内的对象。

如何设置以上语句以使用timestamp数组doc项内的events来按时间戳排列我的项?

更新功能

      let newDetails = this.newDetails
      let timestamp = moment(Date.now()).format('lll')
      let ref = db.collection('users').where('user_id', '==', firebase.auth().currentUser.uid)
        .get()
        .then(function (querySnapshot) {
          querySnapshot.forEach(function (doc) {
            console.log(doc.id, ' => ', doc.data())
              doc.ref.update({'events': firebase.firestore.FieldValue.arrayUnion({
                'name': doc.data().name,
                'details': newDetails,
                'timestamp': moment(Date.now()).format('lll')
              })
            })
          })
        })

1 个答案:

答案 0 :(得分:0)

不可能基于数组类型文档字段中的各个值对查询进行排序。您必须将此时间戳值提升为它自己的字段才能对其进行排序。