我应该分开输入验证和数据库查询吗?

时间:2016-10-31 12:45:32

标签: node.js validation software-design

我现在正在研究API后端。我已经编写了一系列函数来查询数据库,例如:

(是的,NodeJS)

function addGuys(guys, cb) {
  var sql = 'INSERT INTO guys ...';
  guys.ForEach(function(guy) {
    // Construct sql according to keys given in `guy`
    // Validate here?
    // add col names, values to sql statment, etc
  }
  // Execute query
}

现在的问题是,我应该验证这些数据库函数中的输入,还是应该在将输入发送到数据库函数之前验证输入?后者看起来更干净,但我是新手,仍然不确定。任何建议都会受到欢迎。感谢。

1 个答案:

答案 0 :(得分:0)

您根本不应该直接构建SQL。相反,你应该使用一个库,它自己进行验证和转义。一个流行的例子是http://docs.sequelizejs.com/en/v3/