sequelize初使用


官網地址:Sequelize

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.

ORM: 對象關系映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping)

個人理解:sequelize可以建立與數據庫中表形成關系數據映射的模型,然后使用自身提供的api來操作模型,從而操作數據庫中的表。

一、安裝

1、使用npm安裝

前提:需要安裝node

npm install --save sequelize

npm install --save mysql2 

我用的數據庫是mysql,可以根據需要進行安裝

2、使用yarn安裝

前提:需要安裝yarn

yarn add sequelize

yarn add mysql2

二、配置

var Sequelize = require("Sequelize"); const sequelize = new Sequelize('數據庫', '用戶名', '密碼', { host: 'localhost', port:'3306', dialect: 'mysql', timezone : "+08:00", }); exports.sequelize = sequelize;

上面是連接數據庫的一個簡單配置,其他配置可以查看官方文檔

三、定義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 說明

四、數據查詢操作

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

我在user表里插入了一行數據,查詢結果打印如下:

五、錯誤整理

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

我的表名user,查詢時默認加"s",變成了“users”

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

參考:sequelize for Node.js : ER_NO_SUCH_TABLE

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

 

 user表里面沒有createdAt字段,默認情況下,Sequelize將添加屬性createdAtupdatedAt模型,便於查詢數據插入和最新更新時間

解決方法有兩種:

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM