Я сталкиваюсь с проблемой в 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 инициализирует обсадную колонну, некоторые ошибки в надежде на лучшее