续集如果不提供查询,删除“哪里”?

时间:2019-04-04 10:52:26

标签: sequelize.js

所以我基本上是将一些查询字符串传递给我的端点以用作过滤器,而我正在使用Sequelize。

我知道我可以使用where来过滤/查找记录,但是我想这样做,以便如果不提供查询字符串,只会被忽略。

当前:

const { status } = req.query;

const tickets = await models.Ticket.findAndCountAll({
  where: {
    status,
  },
  attributes: [
    'id',
    'status'
  ],
});

如果我不将状态作为查询字符串传递,则失败,因为无法执行where。我尝试过也将undefined传递给它,但是没有运气,它错误地说。 ERROR: WHERE parameter "status" has invalid "undefined" value

总而言之,我想这样做,以便如果确实提供查询字符串,则将它们插入到where子句中,但是如果不提供,则将其忽略。

1 个答案:

答案 0 :(得分:1)

如果您知道where具有Sequelize可以使用的值,那就只是仅包含status选项的情况。

const { status } = req.query;

// declare our query options
const options = {
    where: {},
    attributes: [
        'id',
        'status'
    ]
};

// if status has a value (!== undefined), include it in the query
if (status !== undefined)
    options.where.status = status;

const tickets = await models.Ticket.findAndCountAll(options);