#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. я не видел этого в документации. Похоже, я упускаю это из виду, видя, как документация по секвенированию плохо дает правильные названия их разделам. Спасибо! Проверю это через некоторое время