【问题标题】:How to find with sequelize considering properties of an object in an array of objects考虑到对象数组中对象的属性,如何通过 sequelize 查找
【发布时间】:2022-08-24 22:09:14
【问题描述】:

我有一个对象数组,例如:

[
  { title: \'comments-topic-4\', after: \'2022-08-16 18:49:09\' },
  { title: \'comments-topic-3\', after: \'2022-08-16 19:10:05\' }
]

假设我有一个名为notifications 的数据库表,它有两列:userGroupcreatedAt

我需要所有通知,其列 userGroup 等于 \'cmets-topic-4\' 并且列 createdAt 大于 \'2022-08-16 18:49:09\' (这是第一个对象在数组中)。

而且我还需要所有通知,其列 userGroup 等于 \'cmets-topic-3\' 并且列 createdAt 大于 \'2022-08-16 19:10:05\'(即数组中的第二个对象)。

如何仅在对数据库的一个请求中使用 Sequelize 进行这种搜索?

(如果无法使用 Sequelize,解决方案也可以使用原始 SQL)

  • 您使用的是哪个 dbms?
  • @jarlh 我正在使用 MySQL

标签: sql database sequelize.js


【解决方案1】:

因此,解决方案很简单。

由于我有对象,并且 Sequelize 接受对象作为条件,因此我为每个初始对象生成了一个 Sequelize 条件对象。

然后我将所有这些条件对象添加到查询中。

const myObjects = [
  { title: 'comments-topic-4', after: '2022-08-16 18:49:09' },
  { title: 'comments-topic-3', after: '2022-08-16 19:10:05' }
]

const sequelizeConditionObjects = []

myObjects.forEach((obj) => {
    sequelizeConditionObjects.push({
        userGroup: obj.title,
        createdAt: { [Op.gt]: obj.after }
    })
})


// QUERY

await table.findAll({
    where: {
        [Op.or]: [
            ...sequelizeConditionObjects
        ]
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2016-07-26
    • 1970-01-01
    • 2013-07-05
    • 2016-09-19
    • 2017-03-11
    • 2019-05-29
    相关资源
    最近更新 更多