示例:

const Sequelize = require('sequelize');
// 建立连接
const sequelize = new Sequelize('test', 'root', '19931119', {
host: 'localhost',
dialect: 'mysql',//mysql 等
operatorsAiases: false
})
// 1.定义模型Model-fruits (表名,字段名,其它配置)
const Fruit = sequelize.define('fruits', {
name: Sequelize.STRING(20),
price: { type: Sequelize.FLOAT, allowNull: false },
stock: { type: Sequelize.INTEGER, defaultValve: 0 }
}, {
timestamps: false,
getterMethods: {
amount() {
return this.getDataValue('stock') + 'kg'
}
},
setterMethods: {
amount(val) {
const idx = val.indexOf('kg');
const v = val.slice(0, idx);
this.setDataValue('stock', v);
}
}
})
//同步 {force:true},强制同步
Fruit.sync({ force: true })
.then(async () => {
//插入数据
await Fruit.create({ name: '香蕉', price: 3.5 })
fruits = await Fruit.findAll()
//更新实例1 修改amount,触发setterMethods
fruits[0].amount = '16kg';
fruits[0].save();
//更新实例2
await Fruit.update({ price: 3.5 }, { where: { name: '香蕉' } })
//删除
await Fruit.destroy({ where: { name: '香蕉' } })
})

1对多查询

const Sequelize = require('sequelize');
// 建立连接
const sequelize = new Sequelize('test', 'root', '19931119', {
host: 'localhost',
dialect: 'mysql',//mysql 等
operatorsAiases: false
}) // 1:N 示例
const Player = sequelize.define('players', {
name: Sequelize.STRING(20)
})
const Team = sequelize.define('teams', {
name: Sequelize.STRING(20)
})
Player.belongsTo(Team);//放在前面 1端建立关系 查球员属于哪个球队
Team.hasMany(Player);//N端建立关系 球队有几个球员
//这里不是具体某个模型,而是sequelize实例
sequelize.sync({ force: true })
.then(async () => {
//插入数据
await Team.create({ name: '火箭' })
// await Player.create({ name: '哈登', teamId: 1 })
// await Player.create({ name: '保罗', teamId: 1 })
await Player.bulkCreate([{ name: '哈登', teamId: 1 }, { name: '保罗', teamId: 1 }]);
// 关联查询
const players = await Player.findAll({ include: [Team] })
console.log(JSON.stringify(players, null, 2));
})

多对多示例:

const Sequelize = require('sequelize');
// 建立连接
const sequelize = new Sequelize('test', 'root', '19931119', {
host: 'localhost',
dialect: 'mysql',//mysql 等
operatorsAiases: false
}) // N:N 示例
const Fruit = sequelize.define("fruits q", { name: Sequelize.STRING });
const Category = sequelize.define("categories", { name: Sequelize.STRING });
FruitCategory = Fruit.belongsToMany(Category, {
through: "FruitCategory"
});
sequelize.sync({ force: true })
.then(async () => {
// 插入测试数据
await Fruit.create(
{
name: "香蕉",
categories: [{ id: 1, name: "热带" }, { id: 2, name: "温带" }]
}, {
include: [FruitCategory]
}
);
// 多对多联合查询
const fruits = await Fruit.findOne({
where: { name: "香蕉" }, // 通过through指定条件、字段等
include: [{ model: Category, attributes: ['id', 'name'] }]
});
console.log(JSON.stringify(fruits, null, 2));
})

sequelize学习笔记的更多相关文章

  1. sequelize 学习笔记

    使用 eggjs 和 sequelize 进行开发,一些要注意的地方 1.egg 的 egg-sequelize 插件是 sequelize 的V4版本,目前已经更新到V5版本,API有一些变化,比如 ...

  2. Sequelize 学习笔记(11)- Migrations 迁移

    一.作用 类似 git 管理源代码 一样,维护你的 DB. 二.安装 npm install --save sequelize-cli 三.使用 1.构建项目时 node_modules/.bin/s ...

  3. 《SQL 反模式》 学习笔记

    第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. antd源码分析之——标签页(tabs 3.Tabs的滚动效果)

    由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第三部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ...

  2. mongodb 的云数据库产品 mlab 的使用

    mongodb的云数据库产品mlab,新用户注册,提供500m免费的空间,对于创建测试的网站数据库来说,足够使用.虽然是服务器是在美国,但是链接稳定.下面就介绍注册和使用的流程. 浏览器中,输入网址h ...

  3. 【VMWare】虚拟机启动遇到黑屏,在命令行窗口输入netsh winsock reset并不管用 重新启动客户机就好了

    现象:虚拟机启动后是莫名其妙的黑屏,而且它上面安装的MySql也无法访问了. 处置:上网百度方案,看到大多数网文推荐:“以管理员身份打开cmd,输入netsh winsock reset,然后重启机器 ...

  4. 指定pip清华源

    临时指定: pip install cefpython3 -i https://pypi.tuna.tsinghua.edu.cn/simple 一直使用:pip的配置文件为%HOME%/pip/pi ...

  5. leetcode30 串联所有单词的子串

    先对words中的单词排列组合,然后对s滑窗操作:部分样例超时,代码如下: class Solution { public: vector<int> findSubstring(strin ...

  6. Jmeter设置字体大小

    Jmeter5.0原配置字体很小,需要更改其配置 在apache-jmeter-5.0/bin/下的jmeter.properties文件中添加如下内容: jmeter.hidpi.mode=true ...

  7. 008-ICMP协议(网络控制文协议)

    一.概述 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控制 ...

  8. 从源码看 Vue 中的 Mixin

    最近在做项目的时候碰到了一个奇怪的问题,通过 Vue.mixin 方法注入到 Vue 实例的一个方法不起作用了,后来经过仔细排查发现这个实例自己实现了一个同名方法,导致了 Vue.mixin 注入方法 ...

  9. HBase管理与监控——彻底删除HBase数据

    1.hadoop的bin目录下,执行命令以下命令清除Hbase数据 hadoop fs -rm -r /hbase 2.连接ZK,执行以下命令清除Hbase数据 rmr /hbase 3.重启ZK.重 ...

  10. Postman的安装和升级

    安装postman Postman本地应用程序 Postman可以作为Mac,Windows和Linux操作系统的本地应用程序. 要安装Postman,请转到应用界面,并根据你的平台点击Mac/Win ...