美文网首页
跟我一起学NodeJS之数据存储

跟我一起学NodeJS之数据存储

作者: 喜剧之王爱创作 | 来源:发表于2020-04-11 22:03 被阅读0次
u=1056781235,1342376453&fm=26&gp=0.jpg

今天讲NodeJS的数据存储,让我们告别假数据,开始吧!

mysql的安装和链接

这里提供两个链接,同学们自己去按照教程安装和链接数据库。

建库、建表、表操作(sql语句)
  • 建库,就是建一个项目的数据库,我们使用Navicat客户端新建数据库即可,也可自行百度,这不是我们重点要讲的内容
  • 建表,我们根据项目要求在我们新建的数据库下面建立不同的表结构,注意是表结构,不建内容,内容需要我们使用sql语句去建,这里也不重点讲,基本的图形化操作,都可以搞定,包括列名,和列的类型,自行学一下,很简单。
  • 表操作,最基本的表操作无非“增、删、改、查”,它将覆盖我们80%的业务内容。这里总结一下常用的“增删改查”的sql语句
insert into users(username,`password`,realname)values('lisi','123','李四');
-- 其中,‘users’为表名,括号里面是要插入到表中的值的对应列名,'values'后面的括号为要插入的对应的值
select * from users
-- 其中,*代表在指定表里查询所有的列,这里建议
--出特殊要求,尽量减少*的使用,因为这样的性能会很不好,所以,我们可以查询指定的列,语法如下
select id, username from users;

-- 当然,我们也可以进行条件查询
select * from users where username='zhangsan' or `password`='123';

-- 也可以进行模糊查询
select * from users where password like '%1%';

-- 也可以对查询结果进行排序
select * from users where password like '%1%' order by id desc;

-- 我们可以通过update做更新操作
update users set realname='李四2' where username='lisi';
-- 我们可以通过delete做删除操作
delete from users where username='lisi';
--注意,delete操作必须要加where,不然把整个表都删除了,这是危险的操作
-- 所以我们一般使用软删除来做删除,我们需要给每一行
-- 数据加一个状态,通过更新状态,再根据这个状态的查询,达到一种软删除的目的

update users set state='0' where username='lisi'; --软删除
select * from users where state='1';
-- 这样我们就做了一个软删除

-- 也可以这样查询
select * from users where state<>'0';
-- <>代表不等于

至此,我们已经学会了sql语句中的增、删、改、查。
接下来,我们将使用nodejs连接数据库,下面提供demo代码。

const mysql = require('mysql')
//创建连接对象

const con =mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    port: 'yourport',
    database: 'myblog',
})
//开始连接
con.connect()

//执行sql语句

// const sql = 'select * from users;'
const sql =`update users set realname='李四211' where username='lisi'`

con.query(sql, (err,result) => {
    if(err) {
        console.log(err)
    }
    console.log(result)
})

//关闭连接
con.end()
//注意,在这个环境中,我们需要安装mysql插件,先通过npm安装即可

上面我们已经学会了使用nodejs连接数据库,并操作表,接下来,我们就对其进行封装,将其使用在我们之前的博客项目中。
因为我们的项目使用的数据库是要分不同的环境的,所以我们对上面的demo进行改造。
我们需要用环境变量来获取环境,从而配置不同的数据库配置。以下是在我们之前的博客项目中操作

  1. 在src目录下建conf文件,做如下配置,用于区别不同的环境变量下应用不同的mysql配置
const env = process.env.NODE_ENV //环境变量

// 配置
let MYSQL_CONF

if (env === 'dev') {
    MYSQL_CONF = {
        host: 'localhost',
        user: 'root',
        password: 'ljt@1234',
        port: '3306',
        database: 'myblog',
    }
}

if (env === 'production') {
    MYSQL_CONF = {
        host: 'localhost',
        user: 'root',
        password: 'ljt@1234',
        port: '3306',
        database: 'myblog',
    }
}

module.exports = {
    MYSQL_CONF
}

之前我们做了通过nodejs连接数据库的demo,在项目中,我们要满足开发要求需要将其封装为一个工具,在src下新建db文件夹,在其下面建mysql.js,如下:

const mysql = require('mysql')
const { MYSQL_CONF } = require('../conf/db')

//创建连接对象
const con = mysql.createConnection(MYSQL_CONF)
//开始连接
con.connect()

//统一执行sql的函数
function exec(sql) {
    const promise = new Promise((resolve, reject) => {
        con.query(sql, (err, result) => {
            if (err) {
                reject(err)
            }
            resolve(result)
        })
    })
    return promise
}

module.exports = {
    exec
}

这样我们就可以利用我们封装的工具,对接我们之前的API了,该工具,只接受sql语句。
到此为止,我们已经学会了数据库的基本使用,和在Nodejs中的使用,以及对其进行满足项目开发的封装,接下来,我们就在项目中使用他吧。

相关文章

  • 跟我一起学NodeJS之数据存储

    今天讲NodeJS的数据存储,让我们告别假数据,开始吧! mysql的安装和链接 这里提供两个链接,同学们自己去按...

  • 跟我一起学NodeJS之安全

    安全 本篇介绍web server (Nodejs)层面上存在的安全问题,并解决 sql注入 sql注入就是我们我...

  • 跟我一起学NodeJs之登录验证

    前面我们讲了数据库的操作,已经可以轻松实现增删改查,接下来,就是服务端开发中的一个重点,就是登录验证,本篇文章由浅...

  • 跟我一起学NodeJS(一)

    随着开发技术的不断更新,NodeJS写服务端已经得到了广泛的实践,因为NodeJS和前端JS都是使用ECMAScr...

  • 跟我一起学NodeJS之操作数据库

    之前的笔记中讲到了如何在nodejs中链接数据库, 以及我们将链接数据库封装为一个方法,这节我们将介绍在项目中使用...

  • 跟我一起学NodeJs之POST接口处理

    NodeJs异步读取文件 前面我们介绍了使用NodeJS来写GET请求代码,那么接下来我们将写POST请求代码 在...

  • 跟我一起学NodeJs之日志

    日志 访问日志access log(server端最重要的日志) 自定义日志(包括自定义事件、错误记录等) nod...

  • sequelize 连接低版本 mysql 数据库,写入中文报错

    如果你在使用 nodejs 开发后台,同时又需要使用 mysql 数据库来存储数据的话,也许会遇到过,存储中文数据...

  • Nodejs Buffer

    Buffer用于存储原始数据,可以让Nodejs处理二进制数据。Nodejs中处理I/O操作就可能用到Buffer...

  • iOS数据库存储之SQLite3

    资源连接: iOS数据库存储之SQL语句; iOS数据存储之文件沙盒; iOS数据存储之NSCoding; SQL...

网友评论

      本文标题:跟我一起学NodeJS之数据存储

      本文链接:https://www.haomeiwen.com/subject/tjipmhtx.html