Афиша-давний читатель-давний читатель - какое классное сообщество.
Я изучаю Firestore / React и надеюсь, что вы можете помочь мне с этим - я рву на себе волосы!
- Я использую node.js и функции Firestore Cloud
- Я пытаюсь обновить значение поля карты connectedContractData , в любом документе, который соответствует моим критериям
- После кучи чтения я решил сделать это на стороне сервера и использовать транзакции, чтобы гарантировать, что все соответствующие документы обновляются атомарно
- Код будет синхронизировать c с Firestore успешно, но на изменяя документ контракт , мне возвращается ошибка функция вернула неопределенное, ожидаемое обещание или значение
Заранее спасибо!
Приветствия Alex
Структура данных ниже:
contracts
service
linkedContractUid: [x, y, z]
linkedContractData: {contractId:{label: data, label: data, label: data}, contractId:{}, contractId:{}}
Код ниже:
const updateServiceContract = (contract, contractId) => {
const updateDocs = admin.firestore().collection('service').where('linkedContractUid', 'array-contains', contractId)
var transaction = admin.firestore().runTransaction(t => {
return t.get(updateDocs)
.then(snapshot => {
snapshot.forEach(doc => {
const docRef = admin.firestore().collection('service').doc(doc.id)
console.log(docRef)
t.set(docRef, {
linkedContractData: {
[contractId]: contract
}
});
})
})
})
}
exports.contractUpdated = functions.firestore
.document('contracts/{contractId}')
.onUpdate((change, context) => {
const contract = change.after.data();
const contractId = change.after.id
return updateServiceContract(contract, contractId)
})