我正在使用Google Cloud Firestore触发器来触发一个云函数,当一个文档在Firestore中创建时。它工作正常,但我找不到如何获得json的有效负载。几乎所有我做的是:
/* Triggered when a comment is created, updated or deleted.
* Trigger resource is:
* 'projects/myproj/databases/(default)/documents/books/{bookId}'
*/
exports.bookAdded = async (event, context) => {
let data = event.value;
console.log(data);
}
在上面打印data
如下所示:
{
createTime: '2023-02-22T07:17:31.413935Z',
fields: {
title: { stringValue: 'The Breaker' },
author: { stringValue: 'Don Gold' },
},
name: 'projects/myproj/databases/(default)/documents/books/38',
updateTime: '2023-02-22T07:17:31.413935Z'
}
是否有一个API方法可以将fields
属性作为“普通”json(即没有类型定义)来获取?
澄清---------
对于“普通”json,我的意思是没有类型信息,但是以名称/值格式获取fields
数据,在上面的示例中,它将是{ title: 'The Breaker', author: 'Don Gold' }
。
我最初希望Firestore Events文档中使用的data()
方法可以工作,但它没有:在该库中,可以执行以下操作:
exports.createUser = functions.firestore
.document('users/{userId}')
.onCreate((snap, context) => {
// Get an object representing the document
// e.g. {'name': 'Marie', 'age': 66}
const newValue = snap.data();
...
我正在寻找一个与该数据方法等效的方法。
1条答案
按热度按时间t9aqgxwy1#
您可以花时间摆弄
protobufjs
以使其工作,或者您可以组合一个解决方案,如下面所示:protobuf
一起使用,我只实现了下面的possible types中的一小部分。假设
event.value
如下所示:请参阅list of possible values,了解Firestore可能会遇到的不同类型(如时间戳和ArrayValue。protobuf支持broader set of types,但并非所有类型都受Cloud Firestore文档支持。