Это хорошая практика, чтобы написать сырой SQL-запрос в Nodejs?

0

Необработанный sql-запрос, как в:

var sql = "update node SET changed = " + params.updationTime + " where nid = " + params.nid

Рекомендуется ли писать сырой sql-запрос в нашем.js файле? Мы склонны к любой SQL-инъекции? Или будет лучше использовать библиотеку, такую как Knex.js?

  • 0
    сырой запрос, как указано выше, будет склонен к внедрению SQL
  • 0
    будет ли knex лучше в этом случае?
Показать ещё 1 комментарий
Теги:

3 ответа

0

Позвольте базе данных обрабатывать и хранить логику базы данных, использовать хранимые процедуры.

0

Лучше использовать ORM(Object Relational Mapping) вместо Raw-запроса, но когда запрос усложняется, вы должны использовать необработанный запрос и опасаться SQL injection.

0

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)}'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню