javascript - 如何编写自定义 where 条件原始查询?
问题描述
如何将此 sql 查询编写为 sequelize 查询?
select * from chats where senderId + receiverId = 25
我想在下面写的 sequelize 的 where 子句中使用上面的查询 where 条件。
const options = {
page: req.params.pageNo, // Default 1
paginate: 25, // Default 25
order: [['id', 'DESC']],
include: [
{
model: db.users,
required: true,
as: 'senderUser',
attributes: ['id', 'name', 'email', 'mobileNumber', 'profilePic'],
},
{
model: db.users,
required: true,
as: 'receiverUser',
attributes: ['id', 'name', 'email', 'mobileNumber', 'profilePic'],
},
],
where: {
//here i need condition
},
};
db.chats
.paginate(options)
.then(result => {
let apiData = { pages: result.pages, total: result.total, chats: result.docs };
return _RL.apiResponseOk(res, 'Messages', apiData);
})
.catch(error => {
console.log(error);
return _RL.serverError(res);
});
解决方案
您必须编写聚合查询
await Chats.aggregate([
{
$addFields:{
'total':{$add:['$senderId','$receiverId']}
}
},
{
$match:{
'total':{$eq:25}
}
}
])
我假设 senderId 和 receiverId 都是数字
推荐阅读
- hibernate - 为什么将 Hibernate 与 h2 数据库一起使用时会出错?
- python - 解码base85编码字符串时出现base85溢出错误
- python - 从 for 循环中的不同行获取值
- python - Django:找不到模块
- ruby - 红宝石代码错误:'+'没有将整数隐式转换为字符串
- sql - 这两个 SQL 语句是等价的吗?一个有效,另一个无效
- java - 带有 WebSwing 的 JavaFX:会话结束
- autohotkey - 如何用更好的热键替换 Ctrl + c
- javascript - 使用 JS 进行分页
- heroku - 配置 GitLab CI 以部署到 heroku