是否可以直接处理req.body中的数据?

时间:2013-09-26 13:53:03

标签: node.js express

我正在使用Node / Express / Jade中的应用程序。

我有一个呈现表单的GET路由。当用户提交此消息时,POST路由正在处理该请求。我使用bodyParser来填充req.body。

然后我在req.body中清理,验证并生成直接的新数据:

// Shorthand variable
var doc = req.body;

// Sanitise and transform user input
doc.company = sanitize( doc.company ).trim();
doc.contact_person = sanitize( doc.contact_person ).trim();
...

// Validate user input
validator.check( doc.company, 'Some error message' ).notEmpty();
validator.check( doc.contact_person, 'Another error message' ).notEmpty();
...

// Generate new object data
doc.slug = sanitize( doc.company ).toSlug();
...

问题:如果我有任何特殊原因直接在req.body中编辑数据?我是否应该从req.body中的数据创建一个新的“doc”对象,并在该新对象中清理,验证并添加新生成的数据。

2 个答案:

答案 0 :(得分:4)

可以在req.body中编辑数据。您唯一应该注意的是,下一个路由或中间件将获得req.body的修改版本。

因此,您可以创建单个路径/中间件来清理和转换req.body,然后在多个路径中使用转换结果。

答案 1 :(得分:1)

你绝对可以修改它。例如,express.json中间件将原始数据解析为JSON,用于中间件链的其余部分。

如果您打算不改变链的其余部分的数据,最好使用副本,即使它不会干扰正确的操作。它可以防止有时难以调试的错误,这些错误可能会在以后的开发过程中出现。