Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Передача числового значения из модуля не работает. (https://javascript.ru/forum/node-js-io-js/76988-peredacha-chislovogo-znacheniya-iz-modulya-ne-rabotaet.html)

werter1995 10.03.2019 10:49

Передача числового значения из модуля не работает.
 
Есть данный код, который производит поиск и подсчёт количества строк, в которых direction = 1
const sqlite3 =  require('sqlite3').verbose();
 
// open the database
let db = new sqlite3.Database('crdxims.db3');

let sql = `SELECT COUNT(*) AS total FROM ACS_EVENT WHERE direction = 1`
var total
// first row only
db.each(sql, [total], (err,  row)  => {
  if (err) {
    return console.error(err.message);
  }
   return row
    ? console.log(row.total)
    : console.log('No {total}');
 
});

// close the database connection
db.close( );

module.exports = total;


При запуске подсчёт ведёт верно. Также существует аналогичный файл, который ведёт подсчёт данных с direction = 2

Также есть ещё 1 файл, в котором считается разность между этими двумя:
var sum1 = require('./each');
var sum2 = require('./each2');
var sum = sum2 - sum1;
console.log(sum);

При попытка запустить этот файл в node.js, он выводит следующее:

Если заменить в console.log значение sum на sum1
var sum1 = require('./each');
var sum2 = require('./each2');
var sum = sum2 - sum1;
console.log(sum1);

получается:

undifined, то есть значение не определено. Получается, значение не передаётся. Что я делаю не так?:help:

ksa 11.03.2019 08:27

werter1995, ты разделом не ошибся?
Общие вопросы Javascript

SuperZen 11.03.2019 14:53

То, что в консоле показывается, это повезло...

Надо запросы завернуть в Promise.
Потом Promise.all...

Или передавать callback...

p.s. почему each? ;)

laimas 12.03.2019 03:29

Цитата:

Сообщение от werter1995
код, который производит поиск и подсчёт количества строк, в которых direction = 1
Также существует аналогичный файл, который ведёт подсчёт данных с direction = 2

Это уже можно получить одним запросом:

SELECT COUNT(*) total FROM table_name
WHERE direction = 1 OR direction = 2
GROUP BY direction

Запрос вернет две записи, вычитайте. Можно вообще сразу получить в запросе и разницу.


Часовой пояс GMT +3, время: 09:55.