4

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

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

然后我直接在 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”对象,并在该新对象中清理、验证和添加新生成的数据。

4

2 回答 2

4

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

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

于 2013-09-26T14:15:34.253 回答
1

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

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

于 2013-09-26T14:34:55.560 回答