添加到数据库Firebase后返回值

时间:2019-02-12 21:25:47

标签: javascript firebase firebase-realtime-database google-cloud-firestore

我正在使用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;
}
});

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

.set返回一个承诺,因此您必须返回.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 });
});

请参阅:question