可以直接在req.body中的数据上工作吗?

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

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

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

// 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中的数据中创build一个新的“doc”对象,然后在这个新对象中进行消毒,validation并添加新生成的数据。

       

网上收集的解决方案 "可以直接在req.body中的数据上工作吗?"

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

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

你一定可以修改它。 例如, express.json中间件将原始主体数据parsing为JSON,用于中间件链的其余部分。

如果你的意图是不改变链的其余部分的数据,即使它不会干扰正确的操作,最好使用一个副本。 它可以防止在以后的开发中出现难以debugging的错误。