frankly new to js so forgiveme if it's quite silly one.
Firebase functions with Node.js 14 if that matters.
My function (parts of it):
exports.blablabla = functions.region('jajajaj').database.instance('ccc').ref('ddd').onCreate( (change, context) => {
...
/**
FOR LOOP
**/
for (let i = 0; i < numberOfChild; i++) {
/**
CALLING THE ASYNC FUNCTION
**/
if ( i > valueLimit - bufferValue - 1) {
(async function(){
const keyToBeRemoved = pinKeysSorted[i];
const temp = await myAsync(area, country, section, genderString, keyToBeRemoved, lockMaximumTimeInHours);
})()
}
}
/**
SCANNED EVERYTHING , CLOSING OFF
**/
/**
ALIGN THE overFlowValues TO REFLECT THE REAL VALUES
**/
const myPromise = admin.database(zxcf).ref("minop" + genderString ).once('value').then(mySnap => {
promises.push(myPromise);
if (mySnap.val() != null) {
admin.database(zxcf).ref("minop).set(mySnap.numChildren());
console.log("blablabla | aligned the new value in overFlowValues ")
}
/**
REMOVE THE overFlowOnCreateInternalLock
**/
admin.database(zxcf).ref("minop" + genderString).remove();
console.log("blablabla | overFlowOnCreateInternalLock removed")
}
...
});
And the Async function below
async function myAsync(area, country, section, genderString, keyToBeRemoved , lockMaximumTimeInHours){
var promises = [];
var isOnlineRef = admin.database(blabla).ref().child(keyToBeRemoved.substr(17)).child("isOnline");
var lockedByFunctionRef = admin.database(blabla).ref().child(keyToBeRemoved.substr(17)).child("lockedByFunction");
/**
WE WORK ON IT ONLY IF lockedByFunction IS NOT IN THERE OR LOCK IS OLD
**/
const overFlowOnCreateLockedByFunctionPromise = lockedByFunctionRef.once("value").then(function(snapshotOverFlowOnCreateLockedByFunction) {
promises.push(overFlowOnCreateLockedByFunctionPromise);
/**
-1 IF LOCK DOES NOT EXSIST
**/
var lockElapsedTimeInMillis1 = -1;
const currentDateTimeInMillis = (new Date()).getTime();
if ( snapshotOverFlowOnCreateLockedByFunction.exists() ) {
lockElapsedTimeInMillis1 = currentDateTimeInMillis - snapshotOverFlowOnCreateLockedByFunction.val();
}
/**
P R O C E E D I F L O C K N O T E X S I S T O R L O C K E X S I S T A N D I S > T I M E L I M I T l o c k M a x i m u m T i m e I n H o u r s
**/
if ( lockElapsedTimeInMillis1 == -1 || lockElapsedTimeInMillis1 > lockMaximumTimeInHours * 3600000 ) {
console.log("myAsync | user "+ keyToBeRemoved.substr(17) +" lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there")
/** REMOVE THE LOCK **/
lockedByFunctionRef.remove();
/**
WE WORK ON IT ONLY IF NO LOCK OR LOCK IS OLD
**/
const xsxssPromise = isOnlineRef.once("value").then(function(myFunc) {
promises.push(xsxssPromise);
/**
-1 IF LOCK DOES NOT EXSIST
**/
var lockElapsedTimeInMillis2 = -1;
if ( myFunc.exists() ) {
lockElapsedTimeInMillis2 = currentDateTimeInMillis - myFunc.val();
}
/**
P R O C E E D I F L O C K N O T E X S I S T O R L O C K E X S I S T A N D I S > T I M E L I M I T l o c k M a x i m u m T i m e I n H o u r s
**/
if ( lockElapsedTimeInMillis2 == -1 || lockElapsedTimeInMillis2 > lockMaximumTimeInHours * 3600000 ) {
console.log("myAsync | user "+ keyToBeRemoved.substr(17) +" isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there")
/** REMOVE THE LOCK **/
isOnlineRef.remove();
var valueToBeOverF;
/**
READ
**/
const ddddPromise = admin.database(blabla).ref("ccc"+ keyToBeRemoved).once('value').then(mySnap => {
promises.push(ddddPromise);
console.log("myAsync | read from: "ccc"+ keyToBeRemoved);
valueToBeOverF = mySnap.val();
console.log("myAsync | value to be overflown: ", valueToBeOverF);
/**
REMOVE THE ENTRY
**/
admin.database(blabla).ref("ccc" + keyToBeRemoved ).remove();
console.log("myAsync | removed from: "ccc"+ keyToBeRemoved);
});
}
else {
console.log("myAsync | lock isOnline is present and is not expired for "+ keyToBeRemoved.substr(17) +" , not proceeding");
}
});
}
else {
console.log("myAsync | lock lockedByFunction is present and is not expired for "+ keyToBeRemoved.substr(17) +" , not proceeding");
}
});
return Promise.all(promises);
}
What I got is not what is expected: Continue the execution of the function only every call of myAsync has completed
myAsync | user kQaIPKQDZsOJadLGRxhnqTCtKGb2 lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:07.686 PM
myAsync | user lpRYlj4Z0jRiywFEQt4a86lmzsO2 lockedByFunction lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:08.586 PM
blablabla | aligned the new value in overFlowValues
10:44:08.587 PM
blablabla | overFlowOnCreateInternalLock removed
10:44:09.485 PM
myAsync | user U853ufGcbMXtf6FZ3UgJee1E0d22 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:10.085 PM
myAsync | user SI8i56RGbLQrlpugdTKm2qKcHG93 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:10.885 PM
myAsync | user G6nccJbCiUhzc17KIDMVcdyl9Ot2 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:12.286 PM
myAsync | user Hzt9qGrorYa5Qe0940WNxK5Y61K3 isOnline lock exsist and expired or lock does not exsist, removed the entry if it was there
10:44:16.285 PM
myAsync | read from: blabla1
10:44:16.286 PM
myAsync | value to be overflown: { xcf}
10:44:16.485 PM
What I am missing here?
Thank you.
Via Active questions tagged javascript - Stack Overflow https://ift.tt/fdec7Mh
Comments
Post a Comment