Sequelize 是一个基于 promise 的 Node.js ORM 工具, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能

官网地址:Sequelize Docs 中文版 | sequelize-docs-Zh-CNSequelize 文档的中文版本: v4.42.0 v5.21.5 v6.6.2https://demopark.github.io/sequelize-docs-Zh-CN/

1、定义User的实体类

'user' 对应的是表名
        id可以写也可以不写会有一个默认的id属性
        Sequelize+列类型
        db连接数据库的配置
        User.hasOne 说明是一对一的关联
                foreignKey 值是Sex的主键id
                sourceKey  值是User中的属性

const { Sequelize } = require('sequelize');
const db = require('../sequelizeConnectDb');
const Sex = require('./Sex');
let isSyncTable = falseconst User = db.define('user', {  id: {type: Sequelize.UUID,defaultValue: Sequelize.UUIDV4,primaryKey: true},username: Sequelize.STRING,age: Sequelize.NUMBER,sexid: Sequelize.STRING,address: Sequelize.STRING
}, {timestamps: false,paranoid: false,underscored: true,freezeTableName: true,tableName: 'user'
})User.hasOne(Sex, {foreignKey: 'id',sourceKey: 'sexid',constraints: false
});
if(isSyncTable) {User.sync({force: true})
}
module.exports = User

定义一个Sex的实体类

const { Sequelize } = require('sequelize');
const db = require('../sequelizeConnectDb');
let isSyncTable = falseconst Sex = db.define('sex', {name: Sequelize.STRING
}, {timestamps: false,paranoid: false,underscored: true,freezeTableName: true,tableName: 'sex'
})
if(isSyncTable) {Sex.sync({force: true})
}
module.exports = Sex

2、编写查询方法-获取全部数据不分页,主要用--User.findAll()来查询

const User = require('../model/User');
const express = require('express');let router = express.Router();/*** 查询列表,获取全部数据,不分页* 使用方法:findAll*/
router.get('/userAllList', function (req, res, next) {User.findAll().then(resData => {res.send({code: 0,data: resData,msg: 'ok'})}).catch(() => {res.send({code: 9999,data: null,msg: '查询失败'})})
})
module.exports = router

3、编写查询方法-列表分页+关联表信息展示,主要用--User.findAndCountAll()来查询

/*** 查询列表,分页查询+关联查询性别名称* 使用方法:findAndCountAll* 在req.query中接受参数* 传参为:offset limit*/
router.get('/userList', async function (req, res, next) {User.findAndCountAll({offset: (req.query.page - 1) * req.query.pageSize,limit: req.query.pageSize,include: [{model: Sex,attributes: [['name', 'sexname']]},],distinct: true}).then(resData => {res.send({code: 0,data: resData,msg: 'ok'})}).catch((err) => {console.log(err);res.send({code: 9999,data: null,msg: '查询失败'})})
})
module.exports = router

4、编写查询方法-根据username查询为空就查询所有,主要用--User.findAndCountAll()来查询

const User = require('../model/User');
const express = require('express');
let router = express.Router();/*** 查询详情,例如:根据username查询为空就查询所有* 使用方法:findAndCountAll* 在req.query中接受参数*/
router.get('/userAll', async function (req, res, next) {let whereInfo = {};if(req.query.username){whereInfo={username:req.query.username}}else{whereInfo={}}User.findAndCountAll({where: whereInfo,}).then(resData => {res.send({code: 0,data: resData,msg: 'ok'})}).catch(() => {res.send({code: 9999,data: null,msg: '查询失败'})})
})
module.exports = router

Sequelize 查询操作相关推荐

  1. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  2. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...

  3. Mybatis入门:4(多表查询操作)

    多表查询操作 Mybatis的多表操作 表之间的关系有几种:一对多.一对一.多对一.多对多 举例: 用户和订单就是一对多--一个用户可以下多个订单 订单和用户就是多对一--多个订单属于同一个用户 人和 ...

  4. HBase的安装、写入和查询操作

    实验材料及说明 在Ubuntu系统的/学号(每个人之间的学号)/salesInfo目录下,有买家的购买记录文件Sales,该文件记录了买家的id,购买商品的id以及购买日期,文件为名为Sales.Sa ...

  5. 【node】Sequelize常用操作、基本增删改查

    [node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...

  6. python爬虫 django搜索修改更新数据_一文搞懂Django数据库查询操作

    本文略长,读完约需十分钟.当做复习笔记效果更佳. 查询操作: 数据查询是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时 ...

  7. KD-tree的原理以及构建与查询操作的python实现

    原文地址http://blog.csdn.net/u010551621/article/details/44813299#comments 前几天小组讨论会上展示了kd-tree(k-dimensio ...

  8. MongoDB:mongodb在项目开发时的安全验证、分页查询操作

    MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...

  9. oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...

    SQL查询操作:增删改查 一.SQL操作符 算术操作符 + - * / 比较操作符 = != < > <= >= BETWEEN--AND IN LINK IS NULL 逻辑 ...

最新文章

  1. 人工智能皇冠上的明珠:自然语言处理简介、最新进展、未来趋势
  2. 联合索引和多个单列索引选择
  3. Python教程分享之Python基础知识点梳理
  4. python安装库失败cannot determine archive_pip 无法安装 pip
  5. fastreport 上一行_创业天下全球总裁袁丽军一行莅临平川区 电商农特产扶贫展馆考察指导工作...
  6. Android实用代码七段(二)
  7. minio 搭建blob
  8. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  9. mysql ssl编译_centos编译安装配置支持ssl加密的mysql replication
  10. MySQL搭建主从(一主一从)
  11. 三维空间中的Pitch、Yaw、Roll值
  12. C-V2X 技术介绍
  13. JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
  14. VC用TTS实现文字语音朗读
  15. Visual Studio 2019 下载地址
  16. 开票货物名称写计算机配件可以吗,如何添加开票货物名称
  17. ES源码学习之--Get API的实现逻辑
  18. 微信查询所有关注该公众号的用户
  19. 数据库安全防SQL注入
  20. 统计学习方法|最大熵原理剖析及实现

热门文章

  1. 知虾:虾皮Shopee换货卖家要怎么处理?
  2. 关于with open() as f 的一点小知识
  3. 2022年我为软件质量工作贡献一份力量
  4. CSS 中的vh、vw单位
  5. 要注意 packages.config 中的targetFramework
  6. java程序设计全部课后习题答案_javase程序设计课后题答案
  7. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 6月30日
  8. 【2023注册测绘师考试综合能力考试攻略】 ——海洋测绘的考点试题汇编及参考答案
  9. 动态加载的函数库Dynamically Loaded (DL) Libraries
  10. 当幸福来敲门。。。。。。。。。。