node.js - 将 Sequelize 运算符与来自 JSON 正文的值一起使用
问题描述
通常是 Sequelize 和 SQL 查询的新手,但想知道有一种简单的方法可以在查询数据库时使用从客户端发送的 JSON 正文中的值。我尝试了以下几种变体,但均未成功。
服务器路由的一个简单示例如下所示:
builder.post('/', async (req, res) => {
let track_criteria1 = req.body.criteria1;
let track_criteria2 = req.body.criteria2;
const customPlaylist = await req.context.models.Song.findAll({
where: {
[Op.and]: [
{ criteria1: { [Op.gt]: track_criteria1 } },
{ criteria2: { [Op.gt]: track_criteria2 } }
]}
});
return res.send(customPlaylist);
});
module.exports = builder;
对于上下文,来自客户端的请求如下所示:
const handleSubmit = async event => {
event.preventDefault()
updateStatus(PENDING)
const response = await fetch(`http://localhost:8000/playlistbuilder/`, {
method: 'POST',
contentType: 'application/json',
body: JSON.stringify({
criteria1: state.trackCriteria.criteriaOne,
criteria2: state.trackCriteria.criteriaTwo,
})
})
const tracks = await response.json()
setcustomTracks(tracks)
setTimeout(() => {
updateStatus(SUCCESS)
}, 2000)
}
也许这是一厢情愿!现在没有错误,但是 SQL 查询会像这样注销: WHERE ("songs"."criteria1" > NULL AND "songs"."criteria2" > NULL);
谢谢!
解决方案
如果其他人在这里结束。我通过将 contentType 移动到标题中来解决它。更新的提交处理程序如下所示:
const handleSubmit = async event => {
event.preventDefault()
updateStatus(PENDING)
const response = await fetch(`http://localhost:8000/playlistbuilder/`, {
headers: {
'Content-Type':'application/json'
},
method: 'POST',
body: JSON.stringify({
criteria1: state.trackCriteria.criteriaOne,
criteria2: state.trackCriteria.criteriaTwo,
}),
})
我对此知之甚少,无法解释为什么会这样。我明天会研究它,但它现在正在工作。
推荐阅读
- vpc - 为什么 VPC 对等互连比单个 VPC 更安全?
- numbers - 如何在laravel中拆分输入值并保存在没有字符的数据库中
- javascript - 有没有办法减少 React 项目的大小?
- android - 当我设置 minifyEnabled = true 时,应用程序无法使用 API
- c++ - 播放使用 FFMPEG 创建的分段 MP4 时出现问题
- java - 内在候选静态方法引用会在一段时间后消失?
- c# - 我如何用键设置一个布尔值并让它像一个开关
- javascript - 从承诺待处理的 JS 中获取价值
- ios - applescript:如何在多个窗口中执行击键
- python-3.x - 如何绘制具有数值的列与具有非数值的列?