当前位置: 代码迷 >> JavaScript >> 添加到数据库Firebase后返回值
  详细解决方案

添加到数据库Firebase后返回值

热度:31   发布时间:2023-06-03 18:13:56.0

我正在使用firebase函数来生成2因子身份验证OTP,正在向数据库添加密码,然后返回以生成QRCode以能够与身份验证器一起使用,但是我只能返回密码并希望确认它在显示之前已添加到数据库中,此刻它无论是否返回,但有时都没有返回。

 exports.TOTPSetup = functions.https.onCall((data, context) => { var speakeasy = require('speakeasy'); var secret = speakeasy.generateSecret({length: 20}); admin.firestore().collection('TOTPSecret').doc(data.uid).set({ secret:secret.base32 }, {merge:true}); if(context.auth.token.admin){ return secret; } }); 

有什么想法吗?

.set返回一个promise,因此您必须先返回.then以确保成功编写了它。

 exports.TOTPSetup = functions.https.onCall((data, context) => { var speakeasy = require('speakeasy'); var secret = speakeasy.generateSecret({length: 20}); admin.firestore().collection('TOTPSecret').doc(data.uid) .set({ secret:secret.base32 }, {merge:true}) .then(() => { // successfully written if(context.auth.token.admin){ return secret; } }) .catch(err => { // not successful }); }); 

请参阅: :