我可以将 SQL 语句存储在节点 js 的单独文件中吗?
Can I store SQL statements in a separate file in node 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
文件中。
提前致谢
您当然可以做到,但请记住,使用文件会花费 "too much time"。您可能需要的是执行该查询的层。
例如,您可以这样做:
myDBLayer.getNumber(function(id, country, name){
//Do stuff
});
但是你必须定义getNumber
函数并且为你想要的每个查询做一个函数。当然,您可以接收参数并将其抽象化,但我认为只读取包含所有查询的文件会更有效。
You surely can do that but remember that work with files cost "too
much time"
我不同意 Gepser。文件内容应在服务器启动时加载一次,并在运行时存储在 ram(我的意思是对象)中。
我会将查询分成一些逻辑模块,然后分成表或至少只是表:
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 加载文件。并在运行时使用对象。
我想将所有 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
文件中。
提前致谢
您当然可以做到,但请记住,使用文件会花费 "too much time"。您可能需要的是执行该查询的层。
例如,您可以这样做:
myDBLayer.getNumber(function(id, country, name){
//Do stuff
});
但是你必须定义getNumber
函数并且为你想要的每个查询做一个函数。当然,您可以接收参数并将其抽象化,但我认为只读取包含所有查询的文件会更有效。
You surely can do that but remember that work with files cost "too much time"
我不同意 Gepser。文件内容应在服务器启动时加载一次,并在运行时存储在 ram(我的意思是对象)中。
我会将查询分成一些逻辑模块,然后分成表或至少只是表:
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 加载文件。并在运行时使用对象。