Node.js使用sequelize ORM框架

110 阅读1分钟

使用Node.js连接数据库的话到时候更新,先更新sequelize这个框架,轻量级很舒服!
当然ThinkORM挺舒服的,缺点就是挺重量级适合企业级项目 +_+。

Sequelize 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。

安装

# 使用 npm
npm i sequelize # 这将安装最新版本的 Sequelize
# 使用 yarn
yarn add sequelize

配置

config.js

module.exports = {
	DB : {
		host : '127.0.0.1', // 服务器地址
		port : 3306, // 数据库端口号
		username: 'root', // 数据库用户名
		password: 'wuju', // 数据库密码
		database: 'test', // 数据库名称
		prefix: '' // 数据库前缀
	}
}

db/connect.js

const { Sequelize } = require('sequelize');
const config = require('../../config');

var sequelize;
// 测试连接
try {
	sequelize = new Sequelize(config['DB'].database,
	config['DB'].username,
	config['DB'].password, {
		host: config['DB'].host,
		dialect: 'mysql',
		// logging: false, // 取消日志
	});
	console.log('数据库连接成功');
} catch (error) {
	console.error('数据库连接失败,异常信息:', error);
}

module.exports = sequelize;

编写model

const { DataTypes } = require('sequelize');

const sequelize = require('../../db/connect');

const User = sequelize.define('u', {
	id: {
		type: DataTypes.INTEGER, // 类型
		primaryKey: true // 键
	},
	username: {
		type: DataTypes.STRING,
		field: 'username'
	},
	password : {
		type: DataTypes.STRING,
		field: 'password'
	},
	email : {
		type: DataTypes.STRING,
		field: 'email'
	},
	nickname : {
		type: DataTypes.STRING,
		field: 'nickname'
	},
	token : {
		type: DataTypes.STRING,
		field: 'token'
	},
	cTime : {
		type: DataTypes.INTEGER,
		field: 'token'
	}
},{
	// 表名
	tableName: 'i_users',
	timestamps: false // 不添加时间字段
});

module.exports = User;

使用

const models = require('../app/user/models');

class User {
	static async find(query) {

		let ret = await models.findOne({
			where: {
				...query
			}
		});

		return JSON.parse(JSON.stringify(ret));
	}

	static async add(query) {

		return await models.create({
			username : query.username,
			password : query.password,
			nickname : query.nickname,
			token : 'AAAAAAAAAAAAAA',
			cTime : Date.now()
		})
	}
}

module.exports = User;

末尾

  • sequelize 在线文档:阅读