Сначала вам нужно ВЕРНУТЬ обещание из функции getRightOnCity
.
return myPromise.then
и, возможно, потребуется обернуть вызов БД в обещание.
function getRightOnCity(req_decoded, req_session) {
var myPromise = dbname(req_decoded);
var user_id = getUserid(req_decoded);
var details = getUserDetails(req_decoded);
console.log("user details :: ", details);
var cities = [];
return myPromise
.then(function (myDBName) {
return new Promise((resolve, rej)=>{ //<==here
new_conn(myDBName).query("Select city_id from " + myDBName + ".rights_on_city where user_id=" + user_id, function (err, res) {
if (err) {
console.log("error: ", err);
result(null, err);
rej(err);
} else {
for (var i = 0; i < res.length; i++) {
cities.push(res[i].city_id);
req_session.cities = cities.join();
console.log("city::", req_session.cities);
console.log("email inside get cities ", req_session.email);
req_session.save();
}
resolve();
}
});
})
});
};
Теперь, чтобы использовать его, вам нужна .then
или await
функция.
if (sess.email) {
console.log("session is valid");
checkProfile
.getRightOnCity(req.decoded, req.session)
.then(()=>{
console.log("city session ::", sess.cities);
})
}
Примечание: смешивать Promise
и callback
не очень хорошая идея