firebase Transaction将第一个参数作为函数(任何类型)接收。我可以使用在此功能中返回承诺的方法吗?(在我的情况下是firebase-admin.auth().createUser()
)。
一些清晰的代码:
const ref = admin.database().ref(...);
ref.transaction((currentData) => {
if (currentData === null && ...) {
admin
.auth()
.createUser({...})
.then(data => return { uid: data.uid }) // Need to return this 'someData' from function that wraps current promise.
.catch(() => return null)
} else {
return null
}
});
在此代码中,函数运行而无需等待应许得到解决。
nodejs v.6.11.1(Google Cloud函数)
谢谢!
更新:我希望只有在没有错误的情况下解决Promise(即达到then
)时,才能从此参数 - 函数返回数据,因此仅在用户创建的情况下应用交易。
承诺不能在事务处理程序内使用。需要交易处理程序立即在交易位置返回数据库的新内容。
呼叫交易()本身会返回诺言,因此,如果您想在成功交易后做某事,则可以在该诺言(包含交易的成功状态)上使用(),然后跟进一些其他可能还可以从那里回报承诺的动作。
现在,看起来您在交易中的数据库中看起来都没有任何更改,所以我很好奇为什么您甚至使用一个。