AWS лямбда и Firebase Admin SDK - PullRequest
       77

AWS лямбда и Firebase Admin SDK

0 голосов
/ 03 апреля 2020

Я сталкиваюсь с проблемой в AWS лямбда. Я пытаюсь соединиться с базой данных Firebase в реальном времени, функция вызывается снова и снова после запуска, и я сталкиваюсь с этим повторяющимся вызовом, когда я инициализирую Firebase admin SDK. делать с обещаниями

var AWS = require('aws-sdk');

var sns = new AWS.SNS();


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

var serviceAccount = require("./serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://facerec-ac072.firebaseio.com"
});
const ref = admin.database().ref();

var SNSTopic = process.env.sns;
var payload;
var p = " ";




exports.handler = (event, context, callback) => {
  // console.log('Received event:', JSON.stringify(event, null, 2));

  //console.log('Received event:', JSON.stringify(event, null, 2));
  //const ref = admin.database().ref();
  var matchedFace = 0;
  var unmatchedFace = 0;

  event.Records.forEach((record) => {

    // Kinesis data is base64 encoded so decode here
    const load = new Buffer(record.kinesis.data, 'base64').toString('ascii');
    payload = JSON.parse(load);

    if (payload.FaceSearchResponse != null) {
      payload.FaceSearchResponse.forEach((face) => {

        if (face.MatchedFaces != null &&
          Object.keys(face.MatchedFaces).length > 0) {

          matchedFace++;

        }
        else {
          unmatchedFace++;
        }
      });
    }
  });

  if (matchedFace > 0 || unmatchedFace > 0) {

    payload.FaceSearchResponse.forEach((face1) => {

      if (face1.MatchedFaces != null &&
        Object.keys(face1.MatchedFaces).length > 0) {

        p = p + JSON.stringify(face1.MatchedFaces[0].Face.ExternalImageId, null, 2);
        var updates = {};
        updates["totalStudents"] = p;
        admin.database().ref('/users').update(updates);
      }

    });


    // p=JSON.stringify(payload.FaceSearchResponse[0].MatchedFaces[0].Face.ExternalImageId,null,2);
    var params = {

      Message: p
        + ' - ' + matchedFace + ' Known Person(s) found ' + unmatchedFace + ' Unknown Person(s) on Video Feed' + '\n' + payload, /* required */
      TopicArn: SNSTopic
    };
    sns.publish(params, function (err, data) {
      if (err) {
        p = ' ';
        console.log(err, err.stack); // an error occurred
        callback(err);
      }
      else {
        p = ' ';
        console.log(data);           // successful response
        
        callback(null, `Successfully processed ${event.Records.length} records.`);
      }
    });
  }
};

firebase инициализирует обсадную колонну, некоторые ошибки в надежде на лучшее

...