我的 Controller 内有一个查询,它正在工作,但当 recibe 参数不存在时它也可以工作
我尝试使用 HTTP 状态响应代码,但结果与手动键入 URL 时创建空数组相同
这是Controller内部的代码
function getPosts(req, res) {
var type = req.params.type;
posts.sequelize.query("SELECT forum.id, forum.forum_type, posts.id,
posts.post_topic_author_id, posts.post_topic_title, posts.forum_type_id
FROM posts, forum WHERE posts.forum_type_id = forum.id AND forum.forum_type = ?", { replacements: [type], type: posts.sequelize.QueryTypes.SELECT }).then(posts => {
res.status(200).send({ posts })
}).catch(err => {
res.status(500).send({ message: 'Ocurrio un error' + err })
});
}
这是我的 route 的代码
const postsController = require('../controllers').posts;
module.exports = (app) => {
app.post('/api/post-create', postsController.create);
app.put('/api/post-update/:id', postsController.update);
app.get('/api/post-get/:type', postsController.getPosts);
}
当用户手动尝试输入不存在的 URL 时,我需要将其发送到类似 404 页面的页面
最佳答案
您可以使用中间件来处理错误。
例如:
- 安装hbs
npm install hbs
创建目录 View 并在应用程序对象中使用此代码:
app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs');
在views目录下创建一个error.hbs文件,并在该文件中添加以下代码:
Message: {{message}}
Status: {{error.status}}
Stack: {{error.stack}}捕获 404 并转发到错误处理程序
app.use(function(req, res, next) { var err = new Error('未找到'); 错误状态 = 404; 下一个(错误); });
希望对你有帮助。
关于mysql - 如何设置查询不接受不存在的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56059753/