sequelize初使用

官网地址:Sequelizehtml

Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, SQLite and MSSQL and features solid transaction support, relations, read replication and more.node

ORM: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)mysql

我的理解:sequelize能够创建与数据库中表造成关系数据映射的模型,而后使用自身提供的api来操做模型,从而操做数据库中的表。sql

1、安装数据库

一、使用npm安装npm

前提:须要安装nodeapi

npm install --save sequelizepromise

npm install --save mysql2 app

我用的数据库是mysql,能够根据须要进行安装ui

二、使用yarn安装

前提:须要安装yarn

yarn add sequelize

yarn add mysql2

2、配置

var Sequelize = require("Sequelize"); const sequelize = new Sequelize('数据库', '用户名', '密码', { host: 'localhost', port:'3306', dialect: 'mysql', timezone : "+08:00", }); exports.sequelize = sequelize;

上面是链接数据库的一个简单配置,其余配置能够查看官方文档

3、定义model和表之间的映射

这里我建立了一个用户模型文件,User.js

var Sequelize = require("sequelize"); var sequelize = require('../config.js').sequelize; exports.User = sequelize.define('user',{ Id:{type:Sequelize.INTEGER}, name:{type:Sequelize.STRING}, password:{type:Sequelize.STRING}, number:{type:Sequelize.STRING}, mobile:{type:Sequelize.STRING}, email:{type:Sequelize.STRING}, divisionId:{type:Sequelize.STRING}, role:{type:Sequelize.INTEGER,defaultValue:0}, creditPoint:{type:Sequelize.INTEGER,defaultValue:100} },{ freezeTableName:true, timestamps:false });

具体的数据类型能够查看官方文档中的 Model definition 说明

4、数据查询操做

var User = require('../models/User.js').User; User.findAll().then(user => { console.log(user); })

我在user表里插入了一行数据,查询结果打印以下:

5、错误整理

一、找不到表:Table 'experiment_car.users' doesn't exist

个人表名user,查询时默认加"s",变成了“users”

解决方法:在model文件里加上{ freezeTableName:true }的 配置,sequelize就不会在附加“s”字符

参考:sequelize for Node.js : ER_NO_SUCH_TABLE

二、找不到字段:Unknown column 'createdAt' in 'field list'

 

 user表里面没有createdAt字段,默认状况下,Sequelize将添加属性createdAtupdatedAt模型,便于查询数据插入和最新更新时间

解决方法有两种:

1)在表中添加createdAt和updatedAt字段

2)在model文件里加上{ timestamps:false } 的配置

相关文章
相关标签/搜索