Могу ли я хранить инструкции SQL в отдельном файле в узле js?
Я хотел бы хранить все мои инструкции SQL в отдельном (.txt
может быть?) файл. Это сделает мой код более чистым и читаемым.
Пример:
router.get('/', function (req, res, next) {
var sql = // get SQL from a file
connection.query(sql, function (err, rows, fields) {
var row;
if (!err) {
row = rows[0];
}
res.render('index', { ... });
})
});
P. S. Я не хочу хранить SQL-операторы в .js
файл.
Заранее благодарю вас
2 ответа:
Вы, конечно, можете это сделать, но помните, что работа с файлами стоит "слишком много времени". То, что вам, вероятно, нужно, - это слой, который делает эти запросы.
Например, вы можете сделать что-то вроде:
Но вы должны определить функциюmyDBLayer.getNumber(function(id, country, name){ //Do stuff });
getNumber
и выполнить функцию для каждого запроса, который вы хотите. Конечно, вы можете получать параметры и быть своего рода абстрактным с этим, но я думаю, что это более эффективно, что просто читать какой-то файл со всеми запросами.
Вы, конечно, можете это сделать, но помните, что работа с файлами тоже стоит". много времени "
Я не согласен с Gepser. Содержимое файла должно загружаться один раз при запуске сервера и храниться в оперативной памяти (я имею в виду объект) во время выполнения.
Я бы разделил запросы на некоторые логические модули, а затем на таблицы или, по крайней мере, просто таблицы:
Файл Json :
{ "usersTable": { "selectAll": "select * from user", "selectSome": "select * from users where id > :id", "insert": "insert into users values (:name, :second_name, )" }, "messagesTable": { "selectAll": "" } }
Файл ключ-значение :
usersTable.selectAll=select * from user userTable.selectSome=select * from users where id > :id userTable.insert=insert into users values (:name, :second_name, ) messagesTable.selectAll=
- Если проект огромен, вы не хотите хранить каждый отдельный запрос в один файл. По крайней мере, с подходом "ключ-значение". Разделите файлы по каталогам, содержащим имя модуля.
- используйте именованные параметры вместо позиционных. В противном случае неясно, что такое параметр, когда вы не видите запрос.
- Загрузить файл с sqls при инициализации приложения. И использовать объект во время выполнения.