mysql - 如何设置查询不接受不存在的字段

标签 mysql sql node.js angular typescript

我的 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/

相关文章:

php - Zend 框架 2 'quote_identifiers' => false

sql - SQL Server 存储过程中 IF ELSE 的替代方法

javascript - 如何在 nodeJS 中将返回字节数组的 Bigtable HBase API 转换为整数或 float ?

javascript - 我想使用 node.js 触发对 mysql 的顺序查询,但只有最后一个被触发

jquery - 使用node.js向mysql数据库添加数据

php - 检查字符串是否包含数据库中的单词的函数

mysql - Handlebars js 不呈现 mysql 查询返回的对象数组(在 nodejs 服务器中)

mysql - 是否可以在 SQL 中从表中 SELECT * FROM WHERE column 1 = something 而不是 column_name = something

php - SQL 检查 NULL 字段

php - 如何从我的数据库中过滤这些数据?