如果参数ID为空,则表示JS处理响应

时间:2019-07-15 22:06:41

标签: node.js express

我有一个使用 Express JS 构建的API,可以使用 GET 方法查找数据。成功获取数据。 这是我的代码:

Route.js

router.get('/personal/:id', cont.personal.getPersonalDataById)

Controller.js

getPersonalDataById: function (req, res) {
    PersonalInfo.findOne({
        where: { id: req.params.id }
    }).then(result => {
        if(result){
            utils.success(res, result)
        } else {
            utils.fail(res, 'Personal Data Not Found')
        }
    }).catch(reason => utils.fail(res, reason))
}

我的问题是,如果我请求localhost:3000/personal/,它将获取所有数据。我的意思是没有参数的请求,我该如何发送响应 ID参数不能为空,如果请求没有参数?我可以用渔获或其他方式做到吗?或仅应与手动验证一起使用,例如:

var id = req.params.id;
if(id == null){
    utils.fail(res, "ID Param can't be empty");
}

//OR

if(!id){
    utils.fail(res, "ID Param can't be empty");
}

谢谢

1 个答案:

答案 0 :(得分:0)

我建议使用express-validationjoi

您的路线应如下所示:

const express = require('express');
const validate = require('express-validation');
const Joi = require('joi');

const routeValidation = {
    // GET /personal/:id
  personal: {
    params: {
      userId: Joi.string().required(),
    },
  },
}

router.get('/personal/:id', validate(listUsers), cont.personal.getPersonalDataById)

非常感谢,您将在服务器上进行一些操作之前进行验证