标签:const where data mysql 操作 Post sequelize id Op
官网:https://sequelize.org/v5/manual/querying.html
定义
model/Post.js
const Sequelize = require('sequelize');
const { INTEGER, STRING, DATE } = Sequelize;
module.exports = (app, database) => {
database.define('post', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
// 可以指定字段映射
field: 'id',
},
code: STRING,
content: STRING,
description: STRING,
status: STRING,
principals: Sequelize.JSON,
createdAt: DATE,
updatedAt: DATE,
});
}
查
Post.findAll({
// 分页
limit: 10,
offset: 0,
// 列名,获取此表中的相关列
attributes: ['id', 'code', 'content'],
// 排序,跟着 id 降序排
order: ['id', 'DESC'],
// where 条件
where: {
// authorId: 2
authorId: {
$in: [12, 13]
},
status: 'active'
}
});
// SELECT * FROM post WHERE authorId = 12 OR authorId = 13;
常用操作符号
const Op = Sequelize.Op
[Op.between]: [6, 10], // BETWEEN 6 AND 10
[Op.in]: [1, 2], // IN [1, 2]
[Op.like]: '%hat', // LIKE '%hat'
// 别名
$between: Op.between,
$in: Op.in,
$like: Op.like,
调用语句查,内容长度小于 6 个字符
Post.findAll({
where: sequelize.where(sequelize.fn('char_length', sequelize.col('content')), 6)
});
// SELECT * FROM post WHERE char_length(content) = 6;
查 JSON
const options = {
offset: page.offset,
limit: page.limit,
where: {
},
raw: true,
};
// JSON_CONTAINS mysqk 5.7 加入,可以查看文档
// https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
options.where = {
[Op.and]: [
options.where,
Sequelize.fn(
'JSON_CONTAINS',
Sequelize.col('department'),
JSON.stringify({
id: parseInt(params.departmentId),
}),
)
],
};
Post.findAndCountAll(options);
增
Post.create(params);
批量增
// 数组里有多项
const insertList = [{......}, {......}];
Post.bulkCreate(insertList);
删
Post.destroy({
where: {
id: 4
}
});
// 或者先查后删
const data = await Post.findById(id);
if (!data) throw new Error('data not found');
return data.destroy();
改
Post.update({
content: '112333',
}, {
where: {
id: 4,
}
});
// 或者先查后改
const data = await Post.findById(4);
if (!data) throw new Error('data not found');
return data.update({
content: 'test'
});
标签:const,where,data,mysql,操作,Post,sequelize,id,Op 来源: https://www.cnblogs.com/everlose/p/12801209.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。