数据库连接
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