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将添加属性createdAt和updatedAt模型,便于查询数据插入和最新更新时间
解决方法有两种:
1)在表中添加createdAt和updatedAt字段
2)在model文件里加上{ timestamps:false } 的配置
sequelize初使用的更多相关文章
- 分享 koa + mysql 的开发流程,构建 node server端,一次搭建个人博客
前言 由于一直在用 vue 写业务,为了熟悉下 react 开发模式,所以选择了 react.数据库一开始用的是 mongodb,后来换成 mysql 了,一套下来感觉 mysql 也挺好上手的.re ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【初码干货】在Window Server 2016中使用Web Deploy方式发布.NET Web应用的重新梳理
在学习和工作的过程中,发现很多同事.朋友,在做.NET Web应用发布的时候,依然在走 生成-复制到服务器 这样的方式,稍微高级一点的,就是先发布到本地,再上传到服务器 这种方式不仅效率低下,而且不易 ...
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
随机推荐
- 火狐浏览器之伪造IP地址
前言: 前段时间,测试过程中需要伪造来源IP地址,百思不得其解,因而发现火狐浏览器的这个Modify Headers插件,十分好用,推荐给大家. 步骤: 1.安装插件Modify Headers 进入 ...
- 《Linux内核分析与设计》读书笔记二
第五章 5.1 与内核通信57 系统调用在用户空间进程和硬件设备之间添加了一个中间层,该层主要作用有三个: 首先它为用户空间提供了一种硬件的抽象接口,举例来说当需要读写文件的时候,应用程序就可以不去管 ...
- Spring scope注解
Spring注解中@scope默认为单例模式(singleton) 设置写法@scope("") 1.singleton单例模式 全局有且仅有一个实例 2.prototype原型模 ...
- Java单元测试框架 JUnit
Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...
- Leetcode题库——47.全排列II
@author: ZZQ @software: PyCharm @file: permuteUnique.py @time: 2018/11/16 13:34 要求:给定一个可包含重复数字的序列,返回 ...
- 剑指offer:合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路: 这道题应该考察也是链表的相关操作.具体实现,新建一个新的链表,用两个指针分别指向两 ...
- 自定义SQL语句
在用@query写了sql语句后,返回的结果集不能自动转换为自定义的对象. 百度有一篇博客,解决方案是直接在sql语句里实例化对象,我用了,但是语法错误,又谷歌了下,sql语句里是不能这样写的,这是h ...
- 第十一周PSP&进度条
PSP 一.表格: D日期 C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 11月24号 站立会议 分配任务&设计final方案 1 ...
- 群里提到的IE设置问题 ---B/S 下页面刷新问题
这里面四个选项的含义 下面是每个选项的作用和意义: 1. “每次访问此页时检查”选项表示浏览器每次访问一个页面时,不管浏览器是否缓存过此页面,都要向服务器发出访问请求.这种设置的优点是实时性很强,肯定 ...
- laravel(一)
laravel文档:https://d.laravel-china.org/docs/5.5/ 一.composer安装laravel 在文档中找的create-project命令,最后加上项目名称, ...