sequelize学习笔记
示例:
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学习笔记的更多相关文章
- sequelize 学习笔记
		
使用 eggjs 和 sequelize 进行开发,一些要注意的地方 1.egg 的 egg-sequelize 插件是 sequelize 的V4版本,目前已经更新到V5版本,API有一些变化,比如 ...
 - Sequelize 学习笔记(11)- Migrations 迁移
		
一.作用 类似 git 管理源代码 一样,维护你的 DB. 二.安装 npm install --save sequelize-cli 三.使用 1.构建项目时 node_modules/.bin/s ...
 - 《SQL 反模式》 学习笔记
		
第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...
 - js学习笔记:webpack基础入门(一)
		
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
 - PHP-自定义模板-学习笔记
		
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
 - PHP-会员登录与注册例子解析-学习笔记
		
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
 - 2014年暑假c#学习笔记目录
		
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
 - JAVA GUI编程学习笔记目录
		
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
 - seaJs学习笔记2 – seaJs组建库的使用
		
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
 
随机推荐
- koa 项目实战(十一)验证登录和注册的 input
			
1.验证注册参数 根目录/validation/register.js const Validator = require('validator'); const isEmpty = require( ...
 - android studio最新版的安装和配置(3.1.2)
			
android studio最新版的安装和配置(3.1.2) 下载地址: android studio:http://www.android-studio.org/ JDK:http://www.or ...
 - Java中<? extends T>和<? super T>的理解
			
? 通配符类型 - <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类; <? super T> 表示类型下界(Java Core中叫超类型限 ...
 - intellij import包 顺序调整
			
intellij中自动import的包顺序与eclipse不太一致,可以参照以下方式进行调整: eclipse中(笔者用的是eclipse luna)导入包的顺序依次是: javajavaxorgco ...
 - 错误 MSB6006 CL.exe 已退出,代码为2
			
环境 WIN10 + VS2019 社区版 按照其他网友的方法说 解决方法: 1 一个类内部的定义返回类型为double的方法种没有写return语句. 2 变量没有初始化也会导致这种情况. 但是设置 ...
 - 语音文件 pcm 静默(静音)判断
			
转载:http://www.voidcn.com/relative/p-fwdkigvh-bro.html pcm 文件存储的是 原始的声音波型二进制流,没有文件头. (1)首先要确认 pcm文件的每 ...
 - java使用nio(Paths,Files)遍历文件目录,转成java.io.File
			
String directory = "C:\\Users\\Administrator\\AppData\\Local\\Temp\\8ad088a2-0bb3-41dc-89d9-2c5 ...
 - CentOS8 使用 aliyun 阿里云 镜像站点的方法
			
CentOS8现已可使用国内的aliyun阿里云镜像站,方法如下: 用cd命令切换到yum.repos目录,备份原始的3个repo文件:cd /etc/yum.repos.d/sudo cp Cent ...
 - 冒泡排序到demo
			
package com.lmy.demoSort; /** * 冒泡排序demo * @author Yubaba * */ public class BubbleSort { public stat ...
 - SpringCloud学习(SPRINGCLOUD微服务实战)一
			
SpringCloud学习(SPRINGCLOUD微服务实战) springboot入门 1.配置文件 1.1可以自定义参数并在程序中使用 注解@component @value 例如 若配置文件为a ...