Больше не захватывает событие из firebase с помощью Admin SDK.

Я установил и запустил администратора firebase на моем сервере node, он работал хорошо до сегодняшнего дня, нет никакой ошибки, чтобы сказать, что произошло, он просто перестает работать.

var admin = require("firebase-admin");

            var serviceAccount = require("mycom-firebase-adminsdk-d1ebt123456.json");

            var app = FireBaseAdapter.admin.initializeApp({
                credential: FireBaseAdapter.admin.credential.cert(serviceAccount),
                databaseURL: "https://xxxx.firebaseio.com"
            });

var db = app.database();
var ref = db.ref("messages"); // this node actually exists in my db.


ref.on("value", function(snapshot) {
// this will never be called - which has been working before.

  console.log(snapshot.val());
}, function (errorObject) {
  console.log("The read failed: " + errorObject.code);
});

Я даже оборачиваю его в try catch, чтобы распечатать ошибку, но ее нет. Я могу войти в консоль firebase в учетной записи и увидеть свою базу данных без изменений (небольшая база данных) (хотя она кажется медленнее, чем обычно). Что-то не так с Firebase Admin SDK? Любая помощь приветствуется.


person Telvin Nguyen    schedule 11.12.2016    source источник
comment
Я только что быстро проверил и все еще могу читать из одной из моих баз данных с учетными данными администратора, подобно тому, как это делает ваш код. Пробовал и с версией 4.0.0 и с 4.0.4. Поэтому я не думаю, что где-то есть общий сбой и сразу очевидная ошибка в SDK администратора.   -  person Frank van Puffelen    schedule 11.12.2016
comment
Он внезапно перестает работать, он все еще каким-то образом подключается к БД, но событие on value больше не срабатывает. Однако нет ошибки для устранения неполадок.   -  person Telvin Nguyen    schedule 11.12.2016


Ответы (1)


Потратив много часов на выяснение причины, я нашел проблему. Так как я не мог найти никакого способа включить журнал firebase-admin, так что это был тупик, чтобы устранить проблему, в то время как все работает тихо, поэтому я переключился на использование пакета firebase, чтобы вести журнал

var firebase = require("firebase");
firebase.initializeApp({
    databaseURL: "https://xxxxx.firebaseio.com",
    serviceAccount: '....'
});

firebase.database.enableLogging(true); // <=== important

Моя проблема очень похожа на этот вопрос

тогда я мог видеть фактическую ошибку:

p: 0: не удалось получить токен: ошибка: ошибка при обновлении токена доступа: invalid_grant (неверный JWT: токен должен быть недолговечным токеном и в разумные сроки)

Решение этой проблемы было объяснено на этот ответ. Эта проблема вызвана плохой синхронизацией часов компьютера, когда код выполнялся с задержкой в ​​5 минут (из-за неисправной батареи внутренних часов). Он снова начал работать, когда я вручную изменил внутреннее время своего компьютера на правильное (или полностью сбросил дату и время своего компьютера).

В моем случае после сброса даты и времени и часового пояса firebase автоматически снова работает, и мне не нужно заново создавать другую учетную запись службы.

person Telvin Nguyen    schedule 11.12.2016
comment
Хороший улов Телвин! - person Frank van Puffelen; 12.12.2016