我正在使用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”对象,并在该新对象中清理,验证并添加新生成的数据。
答案 0 :(得分:4)
可以在req.body
中编辑数据。您唯一应该注意的是,下一个路由或中间件将获得req.body
的修改版本。
因此,您可以创建单个路径/中间件来清理和转换req.body
,然后在多个路径中使用转换结果。
答案 1 :(得分:1)
你绝对可以修改它。例如,express.json
中间件将原始数据解析为JSON,用于中间件链的其余部分。
如果您打算不改变链的其余部分的数据,最好使用副本,即使它不会干扰正确的操作。它可以防止有时难以调试的错误,这些错误可能会在以后的开发过程中出现。