sqlite3 создать базу данных с обратным вызовом, используя Node - PullRequest
0 голосов
/ 05 июля 2018

Я искал, как создать базу данных sqlite3 с обратным вызовом в Node.js, и не смог найти никаких ссылок. Может кто-нибудь указать мне на документацию или предоставить 2-3-строчный пример кода для достижения следующего:

  • Создайте базу данных sqlite3 и поймайте ошибку, если по какой-либо причине создание не удалось.

Вот что я пробовал:

     let dbCreate = new sqlite3.Database("./user1.db", sqlite3.OPEN_CREATE, function(err){

        if(!err){
           logger.infoLog("Successfully created DB file: " + dbFileForUser + " for user: " + username );
        } else {
           logger.infoLog("Failed to create DB file: " + dbFileForUser + ". Error: " + err );
        }
     });

     dbHandler[username]  = dbCreate;

Когда я выполняю это, я получаю следующую ошибку: "Не удалось создать файл БД: ./database/user1.db. Ошибка: ошибка: SQLITE_MISUSE: неверный параметр или другое неправильное использование API"

Этот вызов без обратного вызова работает просто отлично.

var customDB = new sqlite3.Database ("./ custom.db", sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);

Но при этом я не буду знать, сталкиваюсь ли я с какими-либо ошибками при создании базы данных.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

@Irvin правильно, мы можем взглянуть на http://www.sqlitetutorial.net/sqlite-nodejs/connect/ и отметьте, что если пропустить второй параметр, он принимает значение по умолчанию как sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE и в этом случае, если база данных не существует, будет создана новая база данных с подключением.

sqlite3.OPEN_READWRITE: Он предназначен для открытия соединения с базой данных и выполнения операции чтения и записи.

sqlite3.OPEN_CREATE: создание базы данных (если она не существует) и открытие соединения.

Итак, вот первый способ, где вы должны пропустить 2-й параметр и закрыть задачу без лишних усилий.

const sqlite3 = require("sqlite3").verbose();

let db = new sqlite3.Database('./user1.db', (err) => {
    if (err) {
        console.error(err.message);
    } else {
        console.log('Connected to the chinook database.|');
    }
});


db.close((err) => {
    if (err) {
        return console.error(err.message);
    }
    console.log('Close the database connection.');
});

И это второй способ подключения к базе данных (уже ответил @Irvin).

const sqlite3 = require("sqlite3").verbose();

let db = new sqlite3.Database('./user1.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE
, (err) => {
    if (err) {
        console.error(err.message);
    } else {
        console.log('Connected to the chinook database.');
    }
});


db.close((err) => {
    if (err) {
        return console.error(err.message);
    }
    console.log('Close the database connection.');
});
0 голосов
/ 05 июля 2018

Попробуйте это:

let userDB = new sqlite3.Database("./user1.db", 
    sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, 
    (err) => { 
        // do your thing 
    });

Пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...