const functions = require('firebase-functions');
var admin = require('firebase-admin');
var request = require('request');
var firebase = require('firebase');
admin.initializeApp();
firebase.initializeApp();
exports.takeValues = functions.database.ref('/users/{uid}/')
.onWrite((change, context) => {
var user_id = context.auth.uid;
var FB_access_token = change.after.val().Facebook_Access_Token;
var twitter_username = change.after.val().twitter_handle;
var insta_username = change.after.val().insta_handle;
var test_at_src = change.after.val().Test_Score.Arts;
var test_sp_src = change.after.val().Test_Score.Sports;
var test_ac_src = change.after.val().Test_Score.Academics;
if( FB_access_token!==undefined||'undefined' && twitter_username!==undefined||'undefined' && insta_username!==undefined||'undefined' && user_id!==undefined||'undefined' && test_at_src!==undefined||'undefined' && test_ac_src!==undefined||'undefined' && test_sp_src!==undefined||'undefined'){
apicall(user_id,FB_access_token,twitter_username,insta_username,test_ac_src,test_at_src,test_sp_src)
}
});
function apicall(user_id,FB_access_token,twitter_username,insta_username,test_ac_src,test_at_src,test_sp_src){
return new Promise((resolve, reject)=> {
var dataString = `user_id=${user_id}&FB_access_token=${FB_access_token}&twitter_username=${twitter_username}&insta_username=${insta_username}&test_ac_src=${test_ac_src}&test_at_src=${test_at_src}&test_sp_src=${test_sp_src}`;
var options = {
url: 'http://ip/api',
method: 'POST',
body : dataString
};
function callback(error, response, body)
{
if (!error && response.statusCode === 200)
{
console.log(body);
resolve(body);
}
}
request(options, callback);
});
}
Приведенный выше код вызывает функцию apicall () каждый раз, когда данные записываются в базу данных firebase, даже если все переменные не имеют значений.Но требуется, чтобы код для вызова api, то есть функция apicall (), запускался один раз только после того, как все переменные имеют значения.Что для этого можно сделать?
База данных выглядит следующим образом:
TtUBAOgi0aWBdPou2oCu
Facebook_Access_Token: ".... kwBAHXDtyxSauOZAnzENAnAjzz2" ...
Test_Score
Академика: 1
Искусство: 4
Спорт: 3
insta_handle: "ab"
twitter_handle: "hj"