Поддержка экранирования идентификаторов запросов

Я использую Sequelize 2.0.0 в своем проекте node, и мой диалект — mysql. На данный момент я предпочитаю использовать необработанные SQL-запросы вместо использования методов Sequelize ORM.

Я не могу найти какой-либо пример или документацию о том, «Как использовать идентификаторы экранирующих запросов с моими SQL-запросами» в Sequelize.

В некоторых случаях я хочу избегать кавычек при выполнении операций вставки или обновления.

Мне нужна поддержка, подобная той, которую я нашел в node-mysql https://github.com/felixge/node-mysql#escaping-query-identifiers

Можете ли вы предоставить мне какой-нибудь короткий SQL-запрос (либо вставить, либо обновить), я думаю, документ «Замены» предоставил http://sequelizejs.com/docs/latest/usage#raw-queries — это что-то другое, чего я не ищу. или я могу ошибаться. Я хочу знать, решит ли замена мою проблему с побегом?

Спасибо


person Ashwin Hegde    schedule 17.12.2013    source источник


Ответы (2)


mysql_real_escape_string — это функция PHP, ее нельзя использовать с библиотекой JS.

Sequelize — это ORM, он абстрагирует SQL (и, глядя на документацию, я не вижу API для внедрения необработанного SQL с его помощью). Вам не нужно вручную экранировать строки перед их вставкой в ​​SQL, потому что вы сами не пишете SQL.


Я нашел документацию по необработанным запросам.

Вы можете видеть в документации, что он использует параметризованные запросы:

sequelize.query('SELECT * FROM projects WHERE status = :status ', null, {raw: true}, { status: 'active' }).success(function(projects) {
  console.log(projects)
})

Это предпочтительный способ экранирования текста для SQL (это также верно для PHP).

person Quentin    schedule 17.12.2013
comment
Sequelize поддерживает необработанные SQL-запросы. По какой-то причине я не хочу использовать короткие методы ORM, в этом случае я сам напишу SQL. - person Ashwin Hegde; 17.12.2013
comment
Также см. некоторые комментарии, которые я зарегистрировал по URL-адресу github.com/sequelize/sequelize/issues/1132 - person Ashwin Hegde; 17.12.2013

Нет смысла искать какую-либо документацию о том, «Как использовать экранирующие идентификаторы запросов с моими SQL-запросами» в Sequelize. Потому что Sequelize не имеет абсолютно никакого отношения к идентификаторам MySQL.

Итак, чтобы отформатировать идентификатор, вы должны заключить его в обратные кавычки и двойные обратные кавычки внутри.

person Your Common Sense    schedule 17.12.2013