Возвращаемое значение после добавления в базу данных Firebase - PullRequest
0 голосов
/ 13 февраля 2019

Я использую функцию firebase для генерации 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 голосов
/ 13 февраля 2019

.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...