#javascript #sql #postgresql #loops
#javascript #sql #postgresql #циклы
Вопрос:
Мне нужно перебрать 3 результата SQL-запросов. Проблема в том, что он выдает только первый результат, а не все из них.
exports.rewardsNotifications = function() {
var now = new Date()
var hourUTC = now.getUTCHours()
if (hourUTC <= 18) {
db.task(t => {
return t.any(`SELECT customer.customer_id, customer.phone_number, customer.place_group_id, customer.state, MAX(visit_date_only) AS last_visit, COUNT(visit_date) AS visit_count FROM VISITS
INNER JOIN customer ON visits.customer_id = customer.customer_id AND visits.place_group_id = customer.place_group_id
WHERE customer.state = 'on' GROUP BY customer.customer_id`).then(function(visitsData) {
for(var i=0; i<visitsData.length; i ){
var customer_id = visitsData[i]['customer_id']
var phone_number = visitsData[i]['phone_number']
var place_group_id_visits = visitsData[i]['place_group_id']
var last_visit = visitsData[i]['last_visit']
var visit_count = visitsData[i]['visit_count']
return t.any(`SELECT rewards_list.reward_name, rewards_list.required_visits, rewards_list.place_group_id FROM rewards_list`).then(function(rewards){
for(var j=0; j<rewards.length; j ){
var reward_name = rewards[j]['reward_name']
var reward_required_visits = rewards[j]['required_visits']
var place_group_id_rewards = rewards[j]['place_group_id']
return t.any(`SELECT customer_id, reward_name, place_group_id FROM rewards`).then(function(redeemedRewards){
for(var k=0; k<redeemedRewards.length; k ){
var redeemed_reward_customer_id = redeemedRewards[k]['customer_id']
var reward_redeemed_name = redeemedRewards[k]['reward_name']
var reward_rest_group_id = redeemedRewards[k]['place_group_id']
console.log('THIS ARE THE REWARDS', reward_name)
console.log('THIS IS THE CUSTOMERS', customer_id)
}
})
}
})
}
})
})
}
}
В моем console.log я просто получаю первый результат от запросов (не все клиенты, не все награды).
Что я хочу сделать, это проверить (для всех клиентов), какие вознаграждения клиент выкупил, а какие нет.
Комментарии:
1. Вы должны иметь возможность просто написать SQL-запрос, который даст вам эти результаты, и вам не нужно выполнять цикл или что-то подобное в javascript, чтобы понять это
2. Не могли бы вы указать используемую строку подключения? (убедитесь, что вы удалили любую конфиденциальную информацию)