Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   SQLite не воспринимает числа (https://javascript.ru/forum/node-js-io-js/74736-sqlite-ne-vosprinimaet-chisla.html)

SorryHanzoMain 04.08.2018 20:48

SQLite не воспринимает числа
 
У меня есть таблица. В ней есть столбик ''определение''. В него при помощи кода
client.on("message",  request => {
    const REQUIRED_PREFIX='?';
    const message=request.content.toString().trim();
     
    if(message.substr(0,1)!==REQUIRED_PREFIX)
    return false
       request.reply('Bad request');
     
    sql.run("INSERT INTO вопросы (определение) VALUES (?)" ,[test]);
    sql.run('INSERT INTO вопросы (вопрос) VALUES (?)',[message]);
     
     
    return request.reply('Saved successfully');
  });

Должно попадать число, создаваемое этим кодом
function rand ( min, max, except ) {
    var number = except;
    while (number == except) {
        number = Math.floor( Math.random() * ( max + 1 - min ) + min );
    }
    return number;
}

  var test = [];
  while ( test.length < 9 ) {
    test.push( rand( 1, 8, 0 ) ); // от 1 до 5 включительно, но кроме 4
  }

Число создается, но в таблицу оно вносится как пустое место. Строка появляется, а само число нет.Хотя сообщение в таблицу попадает. И вопрос тем кто хорошо знаком с sqlite. Это число будет сравниваться с другим числом. Когда я вытащу из таблицы "определение" сравнение будет со всеми числами(если так то все сразу или по очереди) или одно число(какое по номеру в таблице)?

Белый шум 04.08.2018 22:20

Цитата:

Сообщение от SorryHanzoMain
Должно попадать число, создаваемое этим кодом

говорите про число, а суёте ему массив чисел...

SorryHanzoMain 04.08.2018 23:34

Белый шум
Да я заметил, что цифры в чат идут не строкой, а столбцом. Как можно переделать этот код. Я новичок и сам код взял как самый подходящий не для сайта.

SorryHanzoMain 04.08.2018 23:39

Цитата:

Сообщение от Белый шум (Сообщение 491772)
говорите про число, а суёте ему массив чисел...

Самое интересное, если я напишу message+test то сработает. Сообщение
будет вместе с числами.

Белый шум 04.08.2018 23:58

sql.run("INSERT INTO вопросы (определение) VALUES (?)" ,[""+test]);
Варианты:
test.toString()
test.join(",")

SorryHanzoMain 05.08.2018 00:01

Цитата:

Сообщение от Белый шум (Сообщение 491780)
sql.run("INSERT INTO вопросы (определение) VALUES (?)" ,[""+test]);
Варианты:
test.toString()
test.join(",")

А в чём будет принципиальная разница?

Белый шум 05.08.2018 00:33

да ни в чём. Первый вариант короче, но использует неявное преобразование. Второй - явное. Используйте тот вариант, который вам понятнее.

SorryHanzoMain 05.08.2018 00:38

Большое спасибо за помощь.


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