Как написать пользовательский, где условие необработанного запроса? - PullRequest
0 голосов
/ 23 января 2020

Как записать этот sql запрос в качестве запроса sequelize?

select * from chats where senderId + receiverId = 25

Я хочу использовать запрос выше, где условие, в котором условие sequelize, которое написано ниже.

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);
        });

1 Ответ

0 голосов
/ 23 января 2020

Вам нужно написать агрегированный запрос

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

Я предполагаю, что оба senderId и receiveId являются числами

...