使用Node.js和SQLite实现轻量级数据库 | 全能工程师之路

一、Node.js和SQLite

Node.js 是一个基于 V8 引擎的 JavaScript 运行环境,可以让 JavaScript 在服务器端运行。而 SQLite 是一个自包含、无需服务器的轻量级数据库,使用起来非常简便。结合使用 Node.js 和 SQLite,我们可以实现一个轻量级的、快速的、一体化的数据库应用。Node.js 带来了非常完美的异步 I/O 机制,使得我们可以用非常优美的方式来编写数据库应用程序。

二、SQLite 的特点

SQLite 数据库具有如下特点:

1. 无需服务器,解压即可直接使用,非常方便;

2. 支持 SQL 数据库标准,支持原子性、一致性、隔离性和持久性(ACID)特性;

3. 非常快速,支持千万或亿级数据操作;

4. 数据库文件是一个独立的小文件,备份和迁移非常方便;

5. 支持数据加密,可以保证数据的安全性。

三、SQLite 的安装和使用

在 Node.js 中使用 SQLite,我们需要首先在本地安装 SQLite。以 Windows 平台为例,我们可以从 SQLite 官网(https://www.sqlite.org/download.html) 下载预编译二进制文件。将下载好的 zip 包解压后,就可以在命令行中运行 SQLite 了。

/* 使用 Node.js 操作 SQLite */

// 加载 sqlite3 模块
const sqlite3 = require('sqlite3').verbose();

// 打开一个数据库连接
let db = new sqlite3.Database('test.db', (err) => {
  if (err) {
    console.error(err.message);
  }
  console.log('Connected to the test.sqlite3 database.');
});

// 创建表
db.serialize(() => {
  db.run('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age INTEGER)');
});

// 插入数据
db.serialize(() => {
  db.run(`INSERT INTO users (name, age) VALUES ('Alan', 18)`);
});

// 查询数据
db.serialize(() => {
  db.each(`SELECT * FROM users`, (err, row) => {
    if (err) {
      console.error(err.message);
    }
    console.log(row);
  });
});

// 关闭连接
db.close((err) => {
  if (err) {
    console.error(err.message);
  }
  console.log('Close the db connection.');
});

上述代码使用 Node.js 中的 sqlite3 模块连接 SQLite 数据库。我们首先创建了一个 test.db 的数据库连接,然后创建了一个 users 表,接着插入了一条记录,最后查询了所有的用户数据。需要注意的是,代码中的每一段操作都要用 db.serialize() 方法包裹起来,这样确保数据操作的顺序是正确的。最后我们用 db.close() 方法关闭了数据库连接。

四、Node.js 中的 Sequelize 模块

在实际的 Node.js 应用中,通常会使用到 ORM(Object Relational Mapping)模块。ORM 模块可以将数据库中的表与实际的对象(Object)或类(Class)进行映射,使得对象和类可以方便地操作数据库,并提供更好的可移植性和安全性。Sequelize 是一个非常好用的 Node.js 中间件,提供了非常强大的 ORM 功能,可以实现轻松访问多种不同的数据库系统。

我们可以先使用 npm 来安装 sequelize 和 sequelize-cli:

$ npm install --save sequelize
$ npm install --save-dev sequelize-cli

安装完成后,我们可以使用 sequelize-cli 来创建一个示例项目:

$ npx sequelize-cli init

这个命令将会创建一个名为 models 的文件夹,里面包含 Sequelize 的一些默认设置、配置和示例模型。关于模型(Model)的详细讲解,读者可以查看相关文档。

在实际使用中,我们需要先连接数据库,然后定义模型并进行数据操作,最后关闭数据库连接。以下是 Node.js 中使用 Sequelize 进行数据操作的示例代码(示例数据包含用户信息和文章信息):

/* 使用 Sequelize 进行数据操作 */

const Sequelize = require('sequelize');
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: 'test.sqlite3'
});

// 定义用户模型
const User = sequelize.define('user', {
  name: Sequelize.STRING,
  age: Sequelize.INTEGER
});

// 定义文章模型
const Article = sequelize.define('article', {
  title: Sequelize.STRING,
  content: Sequelize.TEXT
});

// 建立用户与文章之间的关系
User.hasMany(Article, {as: 'articles'});
Article.belongsTo(User);

// 查询所有用户
User.findAll().then(users => {
  console.log(users);
});

// 查询一个用户和其所有文章
User.findOne({where: {name: 'Alan'}}).then(user => {
  console.log(user);
  user.getArticles().then(articles => {
    console.log(articles);
  });
});

// 插入一条用户数据
User.create({name: 'John', age: 20}).then(user => {
  console.log(user.toJSON());
});

// 更新一篇文章的内容
Article.findOne({where: {title: 'Node.js'}}).then(article => {
  article.content = 'Hello, Node.js!';
  article.save().then(() => {
    console.log('Update article success!');
  });
});

// 删除一篇文章
Article.findOne({where: {title: 'Node.js'}}).then(article => {
  article.destroy().then(() => {
    console.log('Delete article success!');
  });
});

// 关闭数据库连接
sequelize.close();

五、总结

使用 Node.js 和 SQLite 实现轻量级数据库需要掌握 Node.js 和 SQLite 的基础知识,以及 Sequelize 中 ORM 的基本操作。总体来说,这种方法非常适合于快速构建、快速迭代的轻量级应用。因为使用 SQLite,我们免去了连接复杂的数据库服务器,避免了因为数据库问题造成的访问延迟,可以让我们直接将数据存储在客户端或者单一的服务器上。

原创文章,作者:FAVV,如若转载,请注明出处:https://www.506064.com/n/135535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FAVVFAVV
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • lsw2u1:全能编程开发工程师的利器

    lsw2u1是一款多功能工具,可以为全能编程开发工程师提供便利的支持。本文将从多个方面对lsw2u1做详细阐述,并给出对应代码示例。 一、快速存取代码段 在日常开发中,我们总会使用…

    编程 2025-04-29
  • 7ezmpyh全能编程工程师

    7ezmpyh是一个完全能胜任各种编程任务的全能编程工程师。本文将从多个方面对7ezmpyh进行详细阐述,包括他的编程技能、项目经验和个人特点。 一、编程技能 7ezmpyh拥有广…

    编程 2025-04-29
  • 全能编程开发工程师必备技能——如何优化大整数的计算

    本文将会为你分享如何解决大整数计算问题,以9999999967为例,我们将从多个方面对其做详细阐述,并给出完整的代码示例。 一、大整数的表示方法 在计算机中,我们通常采用二进制数来…

    编程 2025-04-29
  • xkujs全能编程开发工程师

    本文将从以下几个方面详细阐述xkujs作为一名全能编程开发工程师的技术能力和实战经验,为初学者提供学习参考。 一、JavaScript基础 作为一名全能编程开发工程师,JavaSc…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • Spring Cloud Greenwich.Release:全能编程开发工程师的首选

    本文将从以下几个方面对Spring Cloud Greenwich.Release进行详细阐述,包括项目概述、核心组件、应用案例、配置和部署等,旨在为全能编程开发工程师提供更好的解…

    编程 2025-04-29
  • 99mav全能编程开发工程师专题

    本文介绍99mav的全能编程开发工程师的各种技能点,以及如何成为一名全能的开发工程师。 一、全面掌握编程技能 一个全能的开发工程师需要全面掌握编程技能,包括但不限于: 熟练掌握多种…

    编程 2025-04-29
  • 全能编程开发工程师必知——DTD、XML、XSD以及DTD参数实体

    本文将从大体介绍DTD、XML以及XSD三大知识点,同时深入探究DTD参数实体的作用及实际应用场景。 一、DTD介绍 DTD是文档类型定义(Document Type Defini…

    编程 2025-04-29

发表回复

登录后才能评论