【问题标题】:Returning value after adding to database Firebase添加到数据库 Firebase 后返回值
【发布时间】:2019-07-06 14:52:32
【问题描述】:

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

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    .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 });
    });

    见:https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-19
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      相关资源
      最近更新 更多