повторение транзакции Firebase при совершении - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь написать транзакцию Firebase в моем приложении angular6 / typcript.Вот как это выглядит:

   console.log('point 1');

    const transaction = db.runTransaction(t => {

      console.log('point 2');
      const docRef = db.collection('Pending').doc(req.query.inviteId);
      console.log('point 3');
      const p = t.set(docRef, acceptance).commit();
      console.log('p = ', p);
      return p;

    }).then(result => {
      console.log('result = ', result);
    }).catch(err => {
      console.log('err = ', err);
    });

Вот как выглядит вывод:

info: точка 1

info: точка 2

info: точка 3

информация: p = Обещание {}

информация: точка 2

информация: точка 3

информация: p = Обещание {}

информация: точка 2

информация: точка 3

информация: p = Обещание {}

информация: точка 2

информация:точка 3

информация: p = обещание {}

информация: точка 2

информация: точка 3

информация: p = обещание {}

info: err = {Ошибка: 10 ABORTED: указанная транзакция истекла или больше не действительна.в Object.exports.createStatusError (/Users/gibranshah/repos/eva-firebasefunctions/functions/node_modules/grpc/src/common.js:87:15) в Object.onReceiveStatus (/ Users / gibranshah / repos / eva-firebfunctions / node_modules / grpc / src / client_interceptors.js: 1188: 28) в InterceptingListener._callNext (/Users/gibranshah/repos/eva-firebasefunctions/functions/node_modules/grpc/src/client_interceptor): interceptor.jpg.onReceiveStatus (/Users/gibranshah/repos/eva-firebasefunctions/functions/node_modules/grpc/src/client_interceptors.js:614:8) при обратном вызове (/ Users / gibranshah / repos / eva-firebasefundules / functions /src / client_interceptors.js: 841: 24) код: 10, метаданные: метаданные {_internal_repr: {}}, подробности: «Ссылочная транзакция истек или больше не действительна».}

Другими словами, кажется, что транзакция выполняется нормально (и я убедился, что данные, которые я пытаюсь зафиксировать в базе данных, фактически передаются в базу данных), но он хочет повторитьтранзакция снова и снова, пока не истечет, и в этот момент блок перехвата выводит сообщение об ошибке:

Ошибка: 10 ABORTED: ссылка на транзакцию истек или больше не действительна.

Почемумою транзакцию хотите повторить, пока она не истечет?Есть ли что-то еще, что мне нужно сделать с p (обещание, возвращаемое t.set (…) .commit ())?Что-то, чтобы указать вызывающей функции (db.runTransaction (…)), что мы закончили с транзакцией?

Спасибо.

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