Необработанный sql-запрос, как в:
var sql = "update node SET changed = " + params.updationTime + " where nid = " + params.nid
Рекомендуется ли писать сырой sql-запрос в нашем.js файле? Мы склонны к любой SQL-инъекции? Или будет лучше использовать библиотеку, такую как Knex.js?
Позвольте базе данных обрабатывать и хранить логику базы данных, использовать хранимые процедуры.
Лучше использовать ORM(Object Relational Mapping)
вместо Raw-запроса, но когда запрос усложняется, вы должны использовать необработанный запрос и опасаться SQL injection
.
Sequelize - хороший ORM для узла и mysql. Однако, если для приложения требуется один или два запроса, вы можете избежать своих переменных. Кроме того, переменные шаблонов литералов будут более чистыми, чем старый метод конкатенации строк.
var sql = 'update node SET changed ${params.updationTime} where nid = ${params.nid}'
Согласно документам драйвера mysql
Чтобы избежать атак SQL Injection, вы всегда должны избегать любых предоставленных пользователем данных, прежде чем использовать их в SQL-запросе. Вы можете сделать это, используя
mysql.escape()
,connection.escape()
илиpool.escape()
var sql = 'update node SET changed ${mysql.escape(params.updationTime)} where nid = ${mysql.escape(params.nid)}'