Я тестирую запущенную Firestore облачную функцию Firebase локально в Node с помощью оболочки Firebase Functions.
При работе с триггером onWrite и передаче нового документа путем вызова updateMonth({foo:'new'})
из оболочки функций я не могу получить ссылку на новый документ.
exports.updateMonth = functions.firestore
.document('users/{userId}').onWrite((change, context) => {
const document = change.after.exists ? change.after.data() : null;
console.log("change.after.exists", change.after.exists)
console.log("change.before.exists", change.before.exists)
const oldDocument = change.before.data();
console.log("Old:",oldDocument)
return true
})
При вызове как до, так и после, чтобы эмулировать обновление документа updateMonth({before:{foo:'old'},after:{foo:'new'}})
, он работает как положено.
Однако, когда вызывается только с updateMonth({foo:'new'})
, как до, так и после документов, кажется, не существует:
i functions: Preparing to emulate functions.
Warning: You're using Node.js v8.4.0 but Google Cloud Functions only supports v6.11.5.
+ functions: hi
+ functions: helloWorld
+ functions: updateMonth
firebase > updateMonth({before:{foo:'old'},after:{foo:'new'}})
'Successfully invoked function.'
firebase > info: User function triggered, starting execution
info: change.after.exists true
info: change.before.exists true
info: Old: { foo: 'old' }
info: Execution took 20 ms, user function completed successfully
firebase > updateMonth({foo:'new'})
'Successfully invoked function.'
firebase > info: User function triggered, starting execution
info: change.after.exists false
change.before.exists false
Old: undefined
Execution took 2 ms, user function completed successfully
Я не уверен, как получить ссылку на создаваемый новый документ. Я ожидаю, что в этом случае изменение.after.exist будет истинным.