如何在firestore触发的函数中写入firestore



我在firebase中设置了以下函数,如果我将新文档添加到集合userAdd中,它就会触发。只要我不想把其他地方写进消防仓库,这一切都会奏效。此处使用变量firestoreDB。只要我这么做,就什么都不管用了。甚至我的日志都不再写了。我在这里错过了什么?

const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase);
const firestoreDB = admin.firestore();
exports.adduser = functions.
region('europe-west1')
.firestore
.document('userAdd/{useradd}').onCreate((snap, context) => {
const newValue = snap.data();
admin.auth().createUser({
email: newValue.contact_email,
emailVerified: false,
password: 'topsecret',
displayName: newValue.contact_email,
disabled: false
})
.then(function(userRecord) {
const userData = {
"_id": userRecord.uid,
"displayName": newValue.contact_email
};
console.log(userData);
return firestoreDB.collection('users').add(userData);
})
.catch(function(error) {
console.log('Error creating new user:', error);
});
});

您没有正确处理承诺。您的函数必须返回一个promise,该promise将解析所有异步工作是否完成。现在,您忽略了admin.auth().createUser()...返回的promise链。您应该从函数返回承诺链,这样云函数就知道何时可以安全地进行清理。否则,这项工作可能永远不会完成。

return admin.auth().createUser(...)
.then(...)
.catch(...)

相关内容

  • 没有找到相关文章