Node.js学习13~基于node-sequelize的查询器,附代码举例

Posted 秋9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js学习13~基于node-sequelize的查询器,附代码举例相关的知识,希望对你有一定的参考价值。

目录

1.findAll()

2.findByPk()

3.findOne()

4.findOrCreate()

5.findAndCountAll()


node-sequelize模型查询(查找器),Finder 方法是生成 SELECT 查询的方法.

默认情况下,所有 finder 方法的结果都是模型类的实例(与普通的 javascript 对象相反). 这意味着在数据库返回结果之后,Sequelize 会自动将所有内容包装在适当的实例对象中. 在少数情况下,当结果太多时,这种包装可能会效率低下. 要禁用此包装并收到简单的响应,请将 raw: true 作为参数传递给 finder 方法.

1.findAll()

在上一教程中已经知道 findAll 方法. 它生成一个标准的 SELECT 查询,该查询将从表中检索所有条目(除非受到 where 子句的限制).

2.findByPk()

findByPk 方法使用提供的主键从表中仅获得一个条目.

const project = await Project.findByPk(123);
if (project === null) 
console.log('Not found!');
 else 
console.log(project instanceof Project); // true
// 它的主键是 123

3.findOne()

findOne 方法获得它找到的第一个条目(它可以满足提供的可选查询参数).

const project = await Project.findOne( where:  title: 'My Title'  );
if (project === null) 
console.log('Not found!');
 else 
console.log(project instanceof Project); // true
console.log(project.title); // 'My Title'

4.findOrCreate()

除非找到一个满足查询参数的结果,否则方法 findOrCreate 将在表中创建一个条目. 在这两种情况下,它将返回一个实例(找到的实例或创建的实例)和一个布尔值,指示该实例是已创建还是已经存在.

使用 where 参数来查找条目,而使用 defaults 参数来定义必须创建的内容. 如果 defaults 不包含每一列的值,则 Sequelize 将采用 where 的值(如果存在).

假设我们有一个空的数据库,该数据库具有一个 User 模型,该模型具有一个 username 和一个 job.

const [user, created] = await User.findOrCreate(
where:  username: 'sdepold' ,
defaults: 
job: 'Technical Lead JavaScript'

);
console.log(user.username); // 'sdepold'
console.log(user.job); // 这可能是也可能不是 'Technical Lead JavaScript'
console.log(created); // 指示此实例是否刚刚创建的布尔值
if (created) 
console.log(user.job); // 这里肯定是 'Technical Lead JavaScript'

5.findAndCountAll()

findAndCountAll 方法是结合了 findAll 和 count 的便捷方法. 在处理与分页有关的查询时非常有用,在分页中,你想检索带有 limit 和 offset 的数据,但又需要知道与查询匹配的记录总数.

findAndCountAll 方法返回一个具有两个属性的对象:

count - 一个整数 - 符合查询条件的记录总数
rows - 一个数组对象 - 获得的记录
 

const  count, rows  = await Project.findAndCountAll(
where: 
title: 
[Op.like]: 'foo%'

,
offset: 10,
limit: 2
);
console.log(count);
console.log(rows);

以上是关于Node.js学习13~基于node-sequelize的查询器,附代码举例的主要内容,如果未能解决你的问题,请参考以下文章

node-sequelize学习笔记二(创建删除表安全检查表表列的数据类型)

Node.js学习12~Ubuntu 20.04.4 LTS安装Node

Node.js学习05:动手啦,基于node.js编写程序

基于node.js及express实现中间件,实现postget

Node.js学习

Node.js学习7~基于Nodejs的高性能MVC框架node-eagle学习