1、VSCode创建Express程序步骤
要在VSCode中创建一个Express程序,你可以按照以下步骤进行操作:
1、安装Node.js
和npm
: 首先,确保你的计算机上已经安装了Node.js和npm。
2、创建项目文件夹: 在你选择的位置上创建一个新文件夹来保存你的Express项目。
3、在VSCode中打开文件夹: 打开VSCode,并通过点击 “文件”(File)菜单中的 “打开文件夹”(Open Folder)选项,选择你在第二步中创建的项目文件夹并打开它。
4、在终端中初始化项目: 在VSCode中,点击 “查看”(View)菜单,选择 “终端”(Terminal)选项。这将打开一个终端窗口。在终端中,导航到你的项目文件夹,并运行以下命令来初始化你的项目:
npm init
这将引导你创建一个新的npm项目,并在项目文件夹中生成一个 package.json
文件。
5、安装Express: 在终端中,运行以下命令来安装Express:
npm install express
这将使用npm下载并安装Express模块。
6、创建Express应用程序文件: 在VSCode中,导航到你的项目文件夹,在项目文件夹中创建一个新的JavaScript文件,例如 app.js
,作为你的Express应用程序的入口点。
7、编写Express应用程序: 在 app.js
文件中,使用以下代码编写一个简单的Express应用程序示例:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这个示例创建了一个简单的Express应用程序,当你在浏览器中访问根路径时,它将返回 "Hello, Express!"
。
8、启动Express应用程序: 在终端中,使用以下命令启动Express应用程序:
node app.js
这将启动Express应用程序,并在终端中显示 "Server is running on port 3000"
。
9、测试Express应用程序: 打开你的Web浏览器,并在地址栏中输入 http://localhost:3000
,然后按下Enter键。你应该能够看到 "Hello, Express!"
在浏览器中显示。
这些是在VSCode中创建一个简单的Express程序的基本步骤。你可以根据自己的需要扩展和修改这个示例。记得在修改代码之前停止正在运行的Express应用程序(在终端中按Ctrl+C)。
2、SQLite学习
SQLite是一种轻量级的嵌入式关系数据库管理系统,支持使用SQL(结构化查询语言)进行数据库操作。下面是一些常用的SQLite命令:
1、创建数据库:
sqlite3 database_name.db
2、创建表:
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
);
3、插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
4、查询数据(重点):
SELECT column1, column2, ... FROM table_name;
5、更新数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
6、删除数据:
DELETE FROM table_name WHERE condition;
7、删除表:
DROP TABLE table_name;
8、查询表结构:
PRAGMA table_info(table_name);
9、导入数据:
.mode csv
.import file_name table_name
这只是一些常用的SQLite命令示例。SQLite支持更多的SQL命令和功能,可以根据具体需求使用适当的命令来操作数据库。你可以查阅SQLite的官方文档以获取更详细的信息和更多命令示例。
3、Express中读取SQLite数据
要在Express中读取SQLite数据,你需要结合使用SQLite3模块和Express框架。以下是使用Express和SQLite3模块读取SQLite数据库数据的一般步骤:
1、确保已在你的项目中安装Express和SQLite3模块。你可以使用npm进行安装:
npm install express sqlite3
2、在你的应用程序中,引入所需的模块:
const express = require('express');
const sqlite3 = require('sqlite3').verbose();
3、创建Express应用程序并设置中间件:
const app = express();
app.use(express.json()); // 解析JSON请求体
4、创建SQLite数据库连接和路由处理程序。你可以在路由处理程序中执行SQLite查询并返回结果:
app.get('/data', (req, res) => {
const db = new sqlite3.Database('path/to/your/database.db'); //我喜欢用相对路径
const sql = 'SELECT * FROM your_table'; //这是查询你的表里面的全部属性,到时候可以自行修改
db.all(sql, [], (err, rows) => {
if (err) {
console.error(err);
res.status(500).json({ error: 'An error occurred' });
return;
}
// 处理查询结果
res.json(rows);
});
db.close();
});
在上述示例中,当收到GET请求**/data**时,会创建一个SQLite数据库连接,执行SELECT查询,并将结果作为JSON响应返回。
也就是你要在浏览器中输入http://localhost:3000/data
5、启动Express应用程序监听指定的端口:
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在上述示例中,应用程序将在端口3000上监听请求。
记得根据实际情况修改数据库文件的路径、查询语句以及路由处理程序的逻辑。这只是一个简单的示例,你可以根据自己的需求进行扩展和优化。
4、需求:读取数据库中的一列属性,将每一行数据单独封装到一个文件中,格式为svg格式
思路:主要是使用SQLite的Node.js驱动程序时的each方法
4.1 each方法
在sqlite3模块中,each方法用于逐行处理查询结果,它接收两个参数:查询语句和一个回调函数。查询语句用于执行数据库查询,而回调函数则在每一行的结果上被调用。
示例用法如下:
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('database_name.db'); //你的数据库文件名
const query = 'SELECT * FROM table_name'; //读取你要读的那个表的全部属性
db.each(query, (err, row) => {
if (err) {
console.error(err);
} else {
console.log(row); // 处理每一行的结果
}
}, (err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`共处理了 ${rowCount} 行数据`); // 在所有行处理完成后调用
}
});
db.close();
在上述示例中,db.each()方法执行查询,并在每一行结果上调用回调函数。回调函数的第一个参数是可能的错误对象,第二个参数是当前行的结果。你可以在回调函数中处理每一行的数据。另外,可以提供第三个回调函数,在所有行处理完成后调用,它的第一个参数也是可能的错误对象,第二个参数是处理的行数。
使用each方法可以逐行处理查询结果,这对于处理大量数据或需要逐行操作的场景非常有用。
请注意,这里的each方法是特定于sqlite3模块的功能,在其他SQLite驱动程序或其他环境中可能具有不同的实现或命名。如果你使用的是不同的SQLite库或不同的语言/框架,请参考相应的文档来了解它们提供的相似功能。
4.2 将遍历的每一条数据存入文件中
要将遍历的每一条数据存入文件中,你可以在db.each()
的回调函数中将每行的数据写入文件。以下是一个示例:
const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');
const db = new sqlite3.Database('database_name.db');
const query = 'SELECT * FROM table_name';
db.each(query, (err, row) => {
if (err) {
console.error(err);
} else {
// 处理每一行的数据
const data = JSON.stringify(row);
// 将所有数据都依次存入单个的output.txt文件,可以改名字
fs.appendFile('output.txt', data + '\n', (err) => {
if (err) {
console.error(err);
}
});
}
}, (err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`共处理了 ${rowCount} 行数据`);
}
// 关闭数据库连接
db.close();
});
在上述示例中,我们使用fs.appendFile()方法将每行数据追加到名为output.txt
的文件中。首先,将每行数据转换为JSON
字符串,然后使用\n
添加换行符,以便每行数据占据文件中的一行。
如果需要在文件写入之前清空文件内容,可以使用fs.writeFile()
替代fs.appendFile()
。
请注意,每次执行查询时都会追加到文件中,是单一文件
4.3 将遍历的每一项存入单独的文件中
如果你想将遍历的每一项存入单独的文件中,你可以在db.each()
的回调函数中为每一项创建一个独立的文件,并将相应的数据写入该文件。以下是一个示例:
const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');
const db = new sqlite3.Database('database_name.db');
const query = 'SELECT * FROM table_name';
db.each(query, (err, row) => {
if (err) {
console.error(err);
} else {
// 创建文件名,例如使用行的ID作为文件名
const fileName = `file_${row.id}.txt`;
// 将数据转换为字符串
const data = JSON.stringify(row);
// 将数据写入文件
fs.writeFile(fileName, data, (err) => {
if (err) {
console.error(err);
} else {
console.log(`数据已保存至文件: ${fileName}`);
}
});
}
}, (err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`共处理了 ${rowCount} 行数据`);
}
// 关闭数据库连接
db.close();
});
在上述示例中,我们为每一项创建一个独立的文件,并以行的ID作为文件名(你可以根据具体需求自定义文件名)。然后,将行数据转换为字符串,并使用fs.writeFile()
方法将数据写入文件。每次迭代时,都会创建一个新的文件并将相应的数据写入其中。
请注意,上述示例中使用JSON字符串化数据进行演示,你可以根据需要选择适当的数据格式。
4.4 筛选具体数据库数据
因为只需要数据库中的某一列数据,所以需要筛选
在进行SELECT
查询语句时,如果你想同时选择多个列,需要使用逗号将它们分隔开。在你的示例中,如果你想选择PNG表中的svg
和name
两列,需要在它们之间加上逗号。以下是查询语句:
SELECT svg, name FROM PNG
通过在列名之间添加逗号,你可以同时选择多个列,并从查询结果中获取这些列的值。请确保在编写查询语句时正确使用逗号来分隔列名。
4.5 存储位置变成一个文件夹
因为上面存储的位置在根目录下,所以只能新建一个文件夹进行存储每一条数据
1、创建文件夹:
在你的应用程序中,使用文件系统模块(如fs模块)创建一个文件夹来存储查询结果。例如:
const fs = require('fs');
const folderPath = 'result_folder';
// 创建文件夹(如果不存在)
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
}
2、遍历查询结果并存储到文件夹:
使用查询语句执行查询操作,并在查询的每一行中将数据存储到文件夹中的文件中。以下是一个示例:
const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');
const db = new sqlite3.Database('database_name.db');
const folderPath = 'result_folder';
const query = 'SELECT svg, name FROM PNG';
db.each(query, (err, row) => {
if (err) {
console.error(err);
} else {
const fileName = `file_${row.name}.txt`; // 使用name作为文件名(你可以根据需求进行自定义)
const filePath = `${folderPath}/${fileName}`;
const data = JSON.stringify(row);
fs.writeFile(filePath, data, (err) => {
if (err) {
console.error(err);
} else {
console.log(`数据已保存至文件: ${filePath}`);
}
});
}
}, (err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`共处理了 ${rowCount} 行数据`);
}
db.close();
});
在上述示例中,我们首先创建了一个名为result_folder
的文件夹(如果它不存在)。然后,我们使用查询语句执行查询操作,并在每一行的结果中将数据存储为一个单独的文件。每个文件名由name列的值构成,并将文件保存在result_folder
文件夹中。
4.6 遍历的数据取消引号
因为想要每个都是svg图片格式,但是遍历出的数据存在引号,所以要消去,可以使用模板字符串来解决
const data = `${svg.slice(1, -1)}`;
在上述示例中,我们使用 svg.slice(1, -1)
去除了最外层的大括号 {},以获取纯粹的 svgred 数据。然后将数据写入文件。
还有一种解决办法,也比较方便文章来源:https://www.toymoban.com/news/detail-463256.html
app.get('/data', (req, res) => {
const db = new sqlite3.Database('./data/testdb.sqlite');
const sql = 'SELECT svg,name,libid,code,type FROM PNG';
db.each(sql, (err, row) => {
if (err) {
console.error(err);
} else {
// 创建文件名,例如使用行的ID作为文件名
const fileName = `${row.libid}-${row.code}-${row.name}.svg`;
const filePath = `${folderPath}/${fileName}`;
// 将数据转换为字符串
const svg = row.svg !== null ? row.svgred.toString() : '';
fs.appendFile(filePath, svg + '\n', (err) => {
if (err) {
console.error(err);
} else {
console.log(`数据已保存至文件: ${filePath}`);
}
});
}
}, (err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`共处理了 ${rowCount} 行数据`); // 在所有行处理完成后调用
}
});
db.close();
});
这样的话生成的本身就是svg标签,不需要转了文章来源地址https://www.toymoban.com/news/detail-463256.html
这个需求也让我具体的了解了Express和SQLite,希望对大家有帮助
到了这里,关于Express+SQLite学习(实用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!