Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2019, 10:49
Новичок на форуме
Отправить личное сообщение для werter1995 Посмотреть профиль Найти все сообщения от werter1995
 
Регистрация: 07.03.2019
Сообщений: 7

Передача числового значения из модуля не работает.
Есть данный код, который производит поиск и подсчёт количества строк, в которых 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, то есть значение не определено. Получается, значение не передаётся. Что я делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2019, 08:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

werter1995, ты разделом не ошибся?
Общие вопросы Javascript
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2019, 14:53
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

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

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

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

p.s. почему each?
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2019, 03:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача значения SRC в текстовое поле <INPUT> dimi007 jQuery 2 10.05.2011 11:00
Передача полю объекта - массиву, значения элемента через set метод poorking Общие вопросы Javascript 1 13.02.2011 20:22
Передача значения ssh AJAX и COMET 4 21.02.2010 21:59
Отображение числового значения у Ext.Slider exvion ExtJS 0 30.01.2010 03:07
передача значения предыдущего элемента ani_jery jQuery 1 16.10.2009 17:24