我使用 Sequelize 作为我的后端 ORM。现在我想对日期做一些 WHERE
操作。
更具体地说,我想获取日期从现在到 7 天前的所有数据。
问题是文档没有指定您可以在 Datatypes.DATE
上执行哪些操作
谁能指出我正确的方向?
原文由 Marc Rasmussen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用 Sequelize 作为我的后端 ORM。现在我想对日期做一些 WHERE
操作。
更具体地说,我想获取日期从现在到 7 天前的所有数据。
问题是文档没有指定您可以在 Datatypes.DATE
上执行哪些操作
谁能指出我正确的方向?
原文由 Marc Rasmussen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不得不从 sequelize 中导入运算符符号并像这样使用。
const { Op } = require('sequelize')
model.findAll({
where: {
start_datetime: {
[Op.gte]: moment().subtract(7, 'days').toDate()
}
}
})
根据文档,出于安全原因,这被认为是最佳做法。
有关详细信息,请参阅 http://docs.sequelizejs.com/manual/tutorial/querying.html 。
使用不带任何别名的 Sequelize 可以提高安全性。某些框架会自动将用户输入解析为 js 对象,如果您未能对输入进行清理,则可能会向 Sequelize 注入带有字符串运算符的对象。
(…)
为了更好的安全性,强烈建议使用 Sequelize.Op 并且根本不依赖于任何字符串别名。您可以通过设置 operatorsAliases 选项来限制您的应用程序需要的别名,请记住清理用户输入,尤其是当您将它们直接传递给 Sequelize 方法时。
原文由 James Graham 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答12.8k 阅读
7 回答2k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答929 阅读✓ 已解决
6 回答1.1k 阅读
Just like Molda says, you can use
$gt
,$lt
,$gte
or$lte
with a date:如果您使用的是 Sequelize 的 v5,则必须包含
Op
因为密钥已移至Symbol
在此处查看更多续集文档