javascript - Nodejs 和 SQLite 如何创建多个表?
问题描述
我对在一个数据库中创建多个表有疑问。我尝试运行 2 个表,但似乎在第一个 db.run( 之后CREATE TABLE
,第二个 db.run(CREATE TABLE
不会在数据库中创建第二个表,这是我使用的代码:
//数据库.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;
解决方案
推荐阅读
- java - showInputDialog - 单击取消选项
- linux - Shell 脚本每 24 小时失败一次,并出现错误 /bin/mkdir: Argument list too long
- python - 在 Celery 任务(Kubernetes 集群)中占用 900Mb RAM 的小型 Flask-SQLAlchemy 查询
- vue.js - 如何在 vue.js 中使用方向键在“v-text-fields”之间传输
- reactjs - 我使用了redux,但是通过连接钩子多次调用了api
- flutter - 从flutter PDF包生成PDF时如何分页
- html - flexbox 网格中的图像
- couchdb - CouchDB 视图为每个“组”返回一个元素
- reactjs - TypeError:cartItems.find 不是函数
- javascript - Vue关闭后如何触发vuejs-datepicker