gpt4 book ai didi

javascript - 如何清理 Node js 中的输入值?

转载 作者:IT老高 更新时间:2023-10-28 23:01:38 24 4
gpt4 key购买 nike

我验证了我的 Node.js 输入,以便它们不会为空,但我也想清理它们。请帮助我如何做到这一点。

req.checkBody('name', 'Name is required!').notEmpty();
req.checkBody('surname', 'Surname is required!').notEmpty();
req.checkBody('username', 'Username is required!').notEmpty();
req.checkBody('password', 'Password is required!').notEmpty();
req.checkBody('password2', 'Passwords do not match!').equals(req.body.password);

var errors = req.validationErrors();

if (errors) {
res.render('user/register', {
errors: errors,
user: null,
title: 'Register'
});
}
else {
var userData = {
name : req.body.name,
surname : req.body.surname,
username : req.body.username,
password : req.body.password,
avatar : 'No_person.jpg'
};
userController.addUser(req,res,userData);
}

最佳答案

  • 对于大部分框架,可以使用sanitize Node 模块:

     npm install sanitize --save

    然后可以使用like:

     var sanitizer = require('sanitize')();

    var name = sanitizer.value(req.name, 'string');
    var surname= sanitizer.value(req.surname, 'string');

    更多可以去sanitize文档

  • 如果您使用的是 express,那么您可以使用 express-validator 进行验证和清理和 express-sanitize-input包如下:

     const express = require('express');
    const { check } = require('express-validator');
    const app = express();

    app.use(express.json())

    app.post('/form', [
    check('name').isLength({ min: 3 }).trim().escape(),
    check('email').isEmail().normalizeEmail(),
    check('age').isNumeric().trim().escape()
    ], (req, res) => {
    const name = req.body.name
    const email = req.body.email
    const age = req.body.age
    })

    更多可以去express-validatorexpress-sanitize-input文档。

  • 如果您使用的是 Hapi,那么您可以使用 Joi 进行验证和清理, 使用 Joi,您可以使用其他选项清理变量

     validate(value, schema, {escapeHtml: true}, [callback])

    更多可以去Joi文档。

  • 如果您不想使用任何第三方模块并想使用内置 Node 进行清理。您可以尝试以下操作:

     // For string variables
    str = typeof(str) === 'string' && str.trim().length > 0 ? str.trim() : '';
    // for boolean values
    bool = typeof(bool) === 'boolean' && bool === true ? true : false;
    // for array values
    arr = typeof(arr) === 'object' && arr instanceof Array ? arr : [];
    // for number values
    num = typeof(num) === 'number' && num % 1 === 0 ? num : 0;
    // for objects
    obj = typeof(obj) === 'object' && !(obj instanceof Array) && obj !== null ? obj : {};

关于javascript - 如何清理 Node js 中的输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com