firebase - 如何按 '_createTime' 对 Firestore 文档进行排序?

标签 firebase google-cloud-firestore google-cloud-functions firebase-admin

我正在使用带有 Admin SDK 的云 Firebase 函数从我的 Firestore 集合中获取最新的文档。排序基于 timestamp 字段。该值在编写文档时明确提供。

获取代码:

const fetchedTransaction = (await transactionsColRef.orderBy('timestamp', 'desc')
                .limit(1).get()).docs[0]

console.log(fetchedTransaction)
console.log('Transaction created at', fetchedTransaction.createTime.toDate())

console.log 语句打印以下输出。查看底部的 _createTime

输出:

QueryDocumentSnapshot {
  _fieldsProto: {
    coinsToday: { doubleValue: 0.017, valueType: 'doubleValue' },
    timestamp: { timestampValue: [Object], valueType: 'timestampValue' }
  },
  _ref: DocumentReference {
    _firestore: Firestore {
      _settings: [Object],
      _settingsFrozen: true,
      _serializer: [Serializer],
      _projectId: 'hidden',
      registeredListenersCount: 0,
      _lastSuccessfulRequest: 1596692513232,
      _backoffSettings: [Object],
      _preferTransactions: false,
      _clientPool: [ClientPool]
    },
    _path: QualifiedResourcePath {
      segments: [Array],
      projectId: 'hidden',
      databaseId: '(default)'
    },
    _converter: {
      toFirestore: [Function: toFirestore],
      fromFirestore: [Function: fromFirestore]
    }
  },
  _serializer: Serializer {
    createReference: [Function (anonymous)],
    allowUndefined: false
  },
  _readTime: Timestamp { _seconds: 1596692513, _nanoseconds: 164886000 },
  _createTime: Timestamp { _seconds: 1596692167, _nanoseconds: 68734000 },
  _updateTime: Timestamp { _seconds: 1596692167, _nanoseconds: 68734000 }
}

Transaction created at 2020-08-06T05:36:07.069Z

我正在寻找一种通过 _createTime 来排序文档的方法,而不是每次都编写一个 timestamp 值。使用 orderBy('_createTime')orderBy('createTime') 无效。

最佳答案

像您目前所做的那样使用字段是正确的方法。您不能对元数据“,_createTime”进行排序。根据https://firebase.google.com/docs/firestore/manage-data/add-data#add_a_document : "如果您希望能够按创建日期对文档进行排序,您应该将时间戳存储为文档中的一个字段。"

关于firebase - 如何按 '_createTime' 对 Firestore 文档进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63277622/

相关文章:

javascript - ReactJS 应用认证 : Firebase+FirebaseUI Uncaught Error: Firebase App named '[DEFAULT]-firebaseui-temp' already exists

ios - Firebase Phone Auth 以及帐户关联

java - 写入 Firebase 时出错。应用程序不断崩溃

javascript - 将 Manifest Version 3 Chrome Extension 连接到 firestore 数据库

firebase - firebase firestore安全规则中的表达式

firebase - 如何在不使用现有文档的情况下在 Firestore 云函数 shell 中触发 onCreate

javascript - 在 angularjs 中找不到 Firebase

Flutter-如何在firebase查询中使用逻辑AND以及如何更新数据?

node.js - 如何将图片上传到 Firebase?是否可以?

firebase - 带有通配符路径的 Firestore 云功能触发器