我正在从批量写入 Firestore 集合的多个文档中检索数据(并将其发送到 PubSub)。这是我的代码:
exports.orderItemstoPubSub = functions
.firestore
.document('Org/{root}/ABC/{abc}/DEF/{def}/GHI/{ghi}')
.onCreate((snap, context) => {
//publish a message to Cloud Pub/Sub topic
const stringFromFS1 = snap.data;
const JSONstringFromFS1 = JSON.stringify(stringFromFS1);
console.log(`JSONstringFromFS1=${JSONstringFromFS1}`)
const dataBuffer = Buffer.from(JSONstringFromFS1)
return pubsubClient
.topic('projects/pubsubclient123-test/topics/pubsubclient123-test')
.publish(dataBuffer)
.then(messageId => {
console.log(`Message ${messageId} published.`)
})
.catch(err => {
console.error('ERROR:', err);
})
});
我不确定是否是批处理问题导致了此问题,但我的其他 onWrite 代码正在运行(数据未批量写入 Firestore):
exports.orderIDtoPubSub = functions
.firestore
.document('Org/{root}/ABC/{abc}/DEF/{def}')
.onWrite((change, context) => {
const stringFromFS = change.after.exists ? change.after.data() : null;
stringFromFS.abc=context.params.abc;
stringFromFS.root=context.params.root;
const JSONstringFromFS = JSON.stringify(stringFromFS);
console.log(`JSONstringFromFS=${JSONstringFromFS}`)
const dataBuffer = Buffer.from(JSONstringFromFS)
return pubsubClient
.topic('projects/pubsubclient123-test/topics/pubsubclient123-test')
.publish(dataBuffer)
.then(messageId => {
console.log(`Message ${messageId} published.`)
})
.catch(err => {
console.error('ERROR:', err);
})
});
我从上面的第一个代码中收到此错误:函数日志文件中的 JSONstringFromFS1=undefined
。
1) 批量写入 Firestore 是否会“减慢”数据库写入速度,从而导致出现此错误?
2)如果答案是肯定的,我该如何规避这个问题?
3) 有没有其他方法可以读取 /Org/{root}/ABC/{abc}/DEF/{def}/GHI/{ghi}
中的所有文档?
谢谢。
最佳答案
问题来自于你必须做的事实
const stringFromFS1 = snap.data();
而不是
const stringFromFS1 = snap.data;
data()
是方法而不是属性,请参阅 https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentSnapshot#data .
请注意,对于 onWrite()
触发的云函数,您可以使用 change.after.data()
正确调用该方法。
关于typescript - 从 onCreate 的 Firestore snap.data 检索数据但出现未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55967704/