首页 > 解决方案 > 如何编写自定义 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);
        });

标签: javascriptmysqlsqlnode.jssequelize.js

解决方案


您必须编写聚合查询

await Chats.aggregate([
    {
        $addFields:{
            'total':{$add:['$senderId','$receiverId']}
        }
    },
    {
        $match:{
            'total':{$eq:25}
        }
    }
])

我假设 senderId 和 receiverId 都是数字


推荐阅读