使用Cloud Functions事件访问Firestore

时间:2017-11-11 04:47:43

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

我正在努力解决一些语法问题

exports.deleteProject = functions.firestore.document('{userID}/projects/easy/{projectID}').onDelete(event => {

我有的功能

console.log(event)

输出

 { data: 
   DocumentSnapshot {
     _ref: DocumentReference { _firestore: [Object], _referencePath: [Object] },
     _fieldsProto: undefined,
     _readTime: undefined,
     _createTime: undefined,
     _updateTime: undefined },
  eventId: 'd4079c38-2dc1-44e2-924d-fa27c3a95f8b-0',
  eventType: 'providers/cloud.firestore/eventTypes/document.delete',
  notSupported: {},
  params: 
   { userID: 'xxxxxxxxxxxxxx',
     projectID: 'dddddddddddd' },
  resource: 'projects/nnnnnnnnn/databases/(default)/documents/xxxxxxxxxxxxxx/projects/easy/dddddddddddd',
  timestamp: '2017-11-11T04:41:16.712975Z' }

我遇到的问题是我似乎无法弄清楚引用数据库的语法(以及随后的另一个集合/文档路径)本身或我打印事件时出现的不同元素。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

当您在Cloud Functions中收到Firestore事件时,它是Event<DeltaDocumentSnapshot>类型的对象,这意味着event.data的类型为DeltaDocumentSnapshot。这样,您就可以通过event.data.ref.firestore使用收到的事件访问整个数据库。这为您提供了一个Firestore对象,您可以使用该对象访问Firestore实例中的集合和文档。例如:

const firestore = event.data.ref.firestore
const docref = firestore.doc('collection/doc')

此外,您可以使用Admin SDK(及其Firestore API)直接从任何云功能访问Firestore,而无需Firestore事件。