Секвенировать — вложенные, где включить?

#node.js #sequelize.js

Вопрос:

У меня есть этот конкретный код, который я хочу преобразовать с помощью логики последовательности. Я обращаюсь из .СЕТЬ к узлу:

 public async Task<IEnumerable<NotificationAppEntity>> GetPagged(NotificatioAppGetPaggedReq req, Guid userId)
        {
            var res = await Context.NotificationApp
                .Where(x => req.Types.Contains(x.NotificationAppTypeId))
                .Include(x => x.CreatedBy).ThenInclude(x => x.UserPics)
                .Include(x => x.Comment)
                .Include(x => x.Task)
                .Include(x => x.Goal)
                .Include(x => x.NotificationAppType)
                .Include(x => x.NotificationAppUserRead)
                .Where(x => x.Task.ProjectId == req.ProjectId.Value || x.Comment.ProjectId == req.ProjectId.Value ||x.Goal.ProjectId == req.ProjectId.Value)
                .OrderByDescending(x => x.CreatedAt)
                .Skip(req.PagingParameter.Skip)
                .Take(req.PagingParameter.Take)
                .ToListAsync();

            return res;
        }
 

Проблема в том, что я не знаю, почему ввод [Op.or]] в ключ включения выдает ошибку. Вот мой текущий код на данный момент:

 async getPagged(userId, body) {
    const notificationApp = await db.NotificationApp.findAll({
        where: { NotificationAppTypeId: body.NotificationAppTypeId },
        offset: body.Skip,
        limit: body.Take,
        include: [
            {
                model: await db.User,
                attributes: { exclude: hideAttributes },
                as: 'CreatedBy',
                include: { model: await db.UserPic },
            },
            {
                model: await db.Comment,
            },
            {
                model: await db.Task,
            },
            {
                model: await db.Goal,
            },
            {
                model: await db.NotificationAppType,
            },
            {
                model: await db.NotificationAppUserRead,
            },
        ],
        order: [['CreatedAt', 'DESC']],
    });

    return notificationApp;
}
 

Если я поместил where: ключ внутри объектов, Sequelize будет рассматривать его как WHERE .. AND .. WHERE .. AND .. и так далее. Можно ли использовать WHERE .. OR .. WHERE .. OR внутри include? Любая помощь будет признательна.

Ответ №1:

Я не уверен, что это то, чего ты хочешь. Потому что я не знаком с .Net

Но…

Если вы хотите поместить свое [Op. или] условие в такое место, как это…

 SELECT *
FROM NotificationApp
left join Task on ~~
left join Comment on ~~ 
where NotificationAppTypeId = (value) 
AND (Task.ProjectId = ProjectId OR Comment.ProjectId = ProjectId OR... )

 

Я думаю, что это может быть работа.

 async getPagged(userId, body) {
    const notificationApp = await db.NotificationApp.findAll({
        where: { 
            NotificationAppTypeId: body.NotificationAppTypeId,
            [Op.or] : [ 
           {'$Task.ProjectId

Я нахожу это  $nested.column$  по этой ссылке


Комментарии:

1. я не видел этого в документации. Похоже, я упускаю это из виду, видя, как документация по секвенированию плохо дает правильные названия их разделам. Спасибо! Проверю это через некоторое время

: ProjectId},
{'$Comment.ProjectIdЯ нахожу это $nested.column$ по этой ссылке

Комментарии:

1. я не видел этого в документации. Похоже, я упускаю это из виду, видя, как документация по секвенированию плохо дает правильные названия их разделам. Спасибо! Проверю это через некоторое время

: ProjectId},
...your conditions
]
},
offset: body.Skip,
limit: body.Take,
include: [
{
model: await db.User,
attributes: { exclude: hideAttributes },
as: 'CreatedBy',
include: { model: await db.UserPic },
},
{
model: await db.Comment,
},
{
model: await db.Task,
},
{
model: await db.Goal,
},
{
model: await db.NotificationAppType,
},
{
model: await db.NotificationAppUserRead,
},
],
order: [['CreatedAt', 'DESC']],
});

return notificationApp;
}
Я нахожу это $nested.column$ по этой ссылке

Комментарии:

1. я не видел этого в документации. Похоже, я упускаю это из виду, видя, как документация по секвенированию плохо дает правильные названия их разделам. Спасибо! Проверю это через некоторое время