node.js - 我无法使用 sequelize 运行具有多个搜索参数的简单搜索
问题描述
我一直在尝试进行简单的搜索,但搜索参数不止一个,但无法真正超越它。我正在使用 sequelize 4.X 和 NodeJs。
好吧,我尝试通过接收这些搜索参数来req.params
接收它们,然后我进行对象破坏(通常只使用一个参数)。我也尝试通过 req.body 发送搜索参数,但在获取它们并将它们传递给sequelize一个无效值错误之后
//controller
static async getParticulars(req, res) {
try {
const one = await termService.getOneComplex(req.body.id,req.body.term,req.body.studentId,req.body.course);
if (!one) {
util.setError(400, "Term can't be found");
return util.send(res);
} else {
util.setSuccess("Term found", 200, one);
return util.send(res);
}
} catch (error) {
util.setError(400, error.message);
return util.send(res);
}
}
//service
static async getOneComplex(classId_n,term_n,studentId_n,course_n){
try {
const foundTerm = await database.Term.findAll({
where :{
[op.and] : [
{classId:classId_n},
{studentId:studentId_n},
{term:term_n},
{course:course_n}
]
}
});
if(Object.values(foundTerm).length >=1){
return foundTerm;
}else{
return null;
}
} catch (error) {
throw error;
}
}
期望:返回一个具有状态、消息、数据(带有实际数据)属性的对象。
//Actual:
{
"status": "Error",
"message": "Invalid value { classId: undefined }"
}
解决方案
您不需要在这里使用运算符。只需在 where 子句中使用简单的哈希。
const foundTerm = await database.Term.findAll({
where :{
classId:classId_n
studentId:studentId_n
term:term_n
course:course_n
}
});
此外,根据您的错误。您正在发送未定义作为 classId 的值。所以记录那个值并检查它为什么是未定义的。
推荐阅读
- wordpress - 主页上的点击变成不可点击。清除浏览器历史记录后修复问题
- python - 合并云 yaml AWS 云形成模板
- computer-science - 小人电脑中的负除法
- python-3.x - 如何在列表中添加空格?
- java - Sedgwick 和 Wayne 的 IndexMinPQ 目的算法 4
- javascript - 无法堆叠多个推送通知
- c# - 刚性物体从侧面进入盒子对撞机的问题
- javascript - 我正在尝试在我的 React Hangman App 中为一组字母设置动画
- networking - ngrok 连接线的含义
- android - 使用 frida 和 java 脚本挂钩受保护的 APK 遇到 attach() 错误