К сожалению, с вашим ограничением просто работать с ECMA 5, самый короткий / оптимальный способ сделать это с +
.Вы можете расположить его так: @ Сергей Подгорный * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * s.Идея заключается в использовании комментариев , которые обрабатываются и используются, как показано ниже.Мы передаем функцию в качестве первого аргумента метода multipleLineString
.Эта функция анализируется на строку, которая включает в себя комментарии.Если вы достаточно осторожны, вы можете выполнить следующую работу:
var multipleLineString = function(f) {
return f.toString().split('\n').slice(1, -1).join('\n');
}
var sqlQuery = multipleLineString (function() {/**
First Line
'Second' Line
"Third" Line (3)
**/});
Но в вашем случае у вас есть значения от dateDeb
и dateFin
для вставки в запрос.Вам придется немного расширить это до следующего:
var multiLine = function (f, dictionary) {
var compiledString = f.toString().split('\n').slice(1, -1).join('\n');
for (var key in dictionary) {
compiledString = compiledString.replace(new RegExp(key, 'g'), dictionaty[key].toString());
}
// Add other enhancements before return (e.g. trimming & cleaning multiple white spaces)
return compiledString;
}
var query = multiLine (function() {/**
SELECT od.`product_reference`, od.`product_name`, SUM(od.`product_quantity`) AS 'cpt'
FROM `ps_order_detail` od
JOIN `ps_orders` o ON o.`id_order` = od.`id_order`
WHERE od.`product_reference` NOT LIKE ('%GIFT%')
AND o.`date_add` BETWEEN _dateDeb AND _dateFin
GROUP BY `product_id`
ORDER BY cpt DESC
LIMIT 10;
**/},
{
_dateDeb: dateDeb,
_dateFin: dateFin
}
);
Объяснение выше: второй аргумент, dictionary
, является своего рода объектом «пара ключ-значение», так что мы можемопределить ключевые слова в комментарии (_dateDeb
и _dateFin
) из первого аргумента и их соответствующие значения, которые будут заменены.Как и в C # Dictionary .Но вы должны быть осторожны при создании объекта, поскольку JS не является строго типизированным.Убедитесь, что 2-й аргумент построен правильно / соответствующим образом, а 1-й аргумент является функцией, которая похожа на приведенные выше примеры.