#javascript #node.js #sqlite
#javascript #node.js #sqlite
Вопрос:
У меня вопрос о создании нескольких таблиц в одной БД. Я пытаюсь запустить для 2 таблиц, но, похоже, после первой db.run( CREATE TABLE
, второй db.run( CREATE TABLE
не создает вторую таблицу в БД, вот код, который я использовал:
//database.js
var sqlite3 = require('sqlite3').verbose();
var md5 = require('md5');
const users = require("./users");
const usersStatistic = require("./users_statistic");
const DBSOURCE = "db.sqlite";
let db = new sqlite3.Database(DBSOURCE, (err) => {
if (err) {
// Cannot open database
console.error(err.message)
throw err
}else{
console.log('Connected to the SQlite database.');
db.run(`CREATE TABLE user (
id integer,
first_name text,
last_name text,
email text UNIQUE,
gender text,
ip_address text,
CONSTRAINT email_unique UNIQUE (email)
)`,(err) => {
if (err) {
// Table already created
}else{
// Table just created, creating some rows
let props = '';
for (let i = 0; i < Object.keys(users[0]).length; i ) {
if(i === Object.keys(users[0]).length - 1) {
props = `${Object.keys(users[0])[i]}`
}else {
props = `${Object.keys(users[0])[i]}, `
}
}
const insert = `INSERT INTO user (${props}) VALUES (?,?,?,?,?,?)`;
for (let i = 0; i < users.length; i ) {
const user = users[i];
db.run(insert,
Object.values(user)
// user['id'],
// user['first_name'],
// user['last_name'],
// user['email'],
// user['gender'],
// user['ip_address']
)
}
// db.run(insert, [users[0]['first_name'], users[0]['last_name'], "admin@example.com"])
// db.run(insert, [users[1]['first_name'], users[2]['last_name'],"user@example.com"])
}
});
//Start second table
db.run(`CREATE TABLE user_statistic (
user_id integer,
date text,
page_views integer,
clicks integer,
)`,(err) => {
if (err) {
// Table already created
}else{
// Table just created, creating some rows
let props = '';
for (let i = 0; i < Object.keys(usersStatistic[0]).length; i ) {
if(i === Object.keys(usersStatistic[0]).length - 1) {
props = `${Object.keys(usersStatistic[0])[i]}`
}else {
props = `${Object.keys(usersStatistic[0])[i]}, `
}
}
const insert = `INSERT INTO user (${props}) VALUES (?,?,?,?)`;
console.log(insert)
for (let i = 0; i < usersStatistic.length; i ) {
const userStatistic = usersStatistic[i];
db.run(insert,
Object.values(userStatistic)
)
}
}
});
}
});
module.exports = db;
Ответ №1:
Привет, прошло некоторое время, но, похоже, никто не отвечает.
Я думаю, вы могли бы попробовать использовать
db.serialize(()=>{
db.run([your 1st query])
db.run([your another query])
db.run([and another query])
})
db.close()