Sequelize 查询操作
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 查询操作相关推荐
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...
- Mybatis入门:4(多表查询操作)
多表查询操作 Mybatis的多表操作 表之间的关系有几种:一对多.一对一.多对一.多对多 举例: 用户和订单就是一对多--一个用户可以下多个订单 订单和用户就是多对一--多个订单属于同一个用户 人和 ...
- HBase的安装、写入和查询操作
实验材料及说明 在Ubuntu系统的/学号(每个人之间的学号)/salesInfo目录下,有买家的购买记录文件Sales,该文件记录了买家的id,购买商品的id以及购买日期,文件为名为Sales.Sa ...
- 【node】Sequelize常用操作、基本增删改查
[node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...
- python爬虫 django搜索修改更新数据_一文搞懂Django数据库查询操作
本文略长,读完约需十分钟.当做复习笔记效果更佳. 查询操作: 数据查询是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时 ...
- KD-tree的原理以及构建与查询操作的python实现
原文地址http://blog.csdn.net/u010551621/article/details/44813299#comments 前几天小组讨论会上展示了kd-tree(k-dimensio ...
- MongoDB:mongodb在项目开发时的安全验证、分页查询操作
MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...
- oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...
SQL查询操作:增删改查 一.SQL操作符 算术操作符 + - * / 比较操作符 = != < > <= >= BETWEEN--AND IN LINK IS NULL 逻辑 ...
最新文章
- 人工智能皇冠上的明珠:自然语言处理简介、最新进展、未来趋势
- 联合索引和多个单列索引选择
- Python教程分享之Python基础知识点梳理
- python安装库失败cannot determine archive_pip 无法安装 pip
- fastreport 上一行_创业天下全球总裁袁丽军一行莅临平川区 电商农特产扶贫展馆考察指导工作...
- Android实用代码七段(二)
- minio 搭建blob
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- mysql ssl编译_centos编译安装配置支持ssl加密的mysql replication
- MySQL搭建主从(一主一从)
- 三维空间中的Pitch、Yaw、Roll值
- C-V2X 技术介绍
- JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
- VC用TTS实现文字语音朗读
- Visual Studio 2019 下载地址
- 开票货物名称写计算机配件可以吗,如何添加开票货物名称
- ES源码学习之--Get API的实现逻辑
- 微信查询所有关注该公众号的用户
- 数据库安全防SQL注入
- 统计学习方法|最大熵原理剖析及实现
热门文章
- 知虾:虾皮Shopee换货卖家要怎么处理?
- 关于with open() as f 的一点小知识
- 2022年我为软件质量工作贡献一份力量
- CSS 中的vh、vw单位
- 要注意 packages.config 中的targetFramework
- java程序设计全部课后习题答案_javase程序设计课后题答案
- 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 6月30日
- 【2023注册测绘师考试综合能力考试攻略】 ——海洋测绘的考点试题汇编及参考答案
- 动态加载的函数库Dynamically Loaded (DL) Libraries
- 当幸福来敲门。。。。。。。。。。