Я получаю данные (и отправляю их в PubSub) из нескольких документов, которые записываются в виде пакета в коллекцию Firestore. Это мой код:
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);
})
});
Я получаю эту ошибку из 1-го кода выше: JSONstringFromFS1=undefined
из файла журнала функций.
1) Замедляет ли пакетная запись в Firestore запись в базу данных и, следовательно, выдает эту ошибку?
2) Если ответ да, как мне обойти это?
3) Есть ли другой способ прочитать все документы из /Org/{root}/ABC/{abc}/DEF/{def}/GHI/{ghi}
?
Спасибо.