nodejs使用sequelize连接数据库实现crud(增删改查),和遇到的问题。

数据库连接

nodejs使用sequelize连接数据库,首先需要安装sequelize模块。利用命令npm install -S sequelize安装完引入即可。

在使用sequelize时需要安装对应的数据库驱动。如下:

npm install --save pg pg-hstore  // postgreSql
npm install --save mysql         // mysql 或 mariadb
npm install --save sqlite3  
npm install --save tedious       // MSSQL

连接数据库具体代码如下:

//引入Sequelize
let { Sequelize, } = require("sequelize");
let db = null;
let dbOper = {
    //数据库的连接
    async connect() {
        try {
            db = new Sequelize(database, user, password, {//三个参数分别为数据库名字,用户名,密码
                host: host,//主机地址
                dialect: "mysql",//mysql数据库驱动
                logging: console.log,//是否输出log信息
            }),
                await db.authenticate();
            console.log("数据库已连接。。。。。。");
            return db;
        } catch (error) {
            console.log("数据库连接失败。。。。。");
            console.log(error);
        }
    },
    async close() {
        if (db != null) {
            await db.close();
            console.log("数据库已关闭。。。。。。")
        } else
            return db;
    },
    async getConnect() {
        if (db == null) {
            db = await this.connect();
        }
        return db;
    }
}

module.exports = dbOper;

在此代码中定义了dbOper模块,利用module.exports导出。在模块类定义了三个方法。

connect()//连接。在此连接数据库的方法中的具体属性只需用到上述即可。如有其他属性的需求可以在官方文档查阅。

close()//关闭数据库

getConnect()//获得数据库连接

crud

进行数据库的增删改查首先肯定需要连接数据库。将之前的代码导入进来,并且还要引入sequelize。

利用db.query来进行数据库的crud。在query里面,第一个参数是sql语句,第二个参数是一个对象,对象中含有许多属性。下面代码中只写了几个属性,其他的按需求去官网查就行。

type

对于type属性,需要注意的是在

查询语句中用的是QueryTypes.SELECT。

删除语句中用的是QueryTypes.DELETE

修改和增加对应的单词是QueryTypes.UPDATE和QueryTypes.INSERT。

plain

而plain这个字段的作用是返回的结果集,如果将其改为true,那么它只会返回查询到数据库的第一条记录。当你需要查询多条记录时,改为false即可。

replacements

对于replacements,它是用来对sql语句中的语句进行替换。比如当你在操作前端向后端发送请求需要对数据库进行操作时,需要发送参数请求,这时发送的参数就可通过参数传递过去,用法很简单,看下面的代码就能懂。无非就是将要替换的参数在sql语句中前面加上“:” 即可。

这里可能有人要问,为什么参数传递过去要在replacements中替换,而不是直接用模板字符串直接替换呢?这是因为这样可能会导致sql注入。不安全。所以尽量不要直接替换,除非在遇到replacements中替换失败(比如替换后自动加入单引号等等,我之前就遇到过,有些时候确实替换不了)。

下面时代码,只有查询和插入的,增加和删除也类似,就懒得写了。

let dbOper = require("../dbOper/dbOper");
let { QueryTypes } = require("sequelize");

    //查询操作
    async selectByXm(xm) {//通过姓名查找
        let db = await dbOper.getConnect();
        let sql = "select * from student where xm=:value";
        if (db == null) {
            console.log("数据库未连接上。。。。。。。")
            return null;
        }
        let rs = await db.query(sql, {
            type: QueryTypes.SELECT,
            plain: false,
            replacements: {
                value: xm,
            }
        })
        return rs;
    },
    //插入操作
    async insert(xh, xm, bj, xb) {//插入学生信息
        let db = await dbOper.getConnect();
        // console.log(db);打印数据库的基本信息
        if (db == null) {
            console.log("数据库未连接上。。。。。。。")
            return null;
        };
        let sql = "insert into student_19_3(xh,xm,bj,xb) values(:xh,:xm,:bj,:xb)";
        let rs = await db.query(sql, {
            type: QueryTypes.INSERT,
            replacements: {
                xh,
                xm,
                bj,
                xb,
            },
        })
        return rs;
    },

因为我也算是个新手上路,这些相当于我的学习笔记一样。没事的时候写一下自己加深记忆,所有肯定会有错误的地方,若有错的话请路过的大佬指正。谢谢!!w(゚Д゚)w

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值