我有一个运行查询的模块,并使用express显示它。
module.exports.runQuery =function(req,res){
//gets connection
connection.on('connect', function(err) {
console.log("success");
//if connection works run the request
executeStatement();
});
function executeStatement() {
request = new Request("INSERT SQL HERE", function(err, rowCount){
我希望能够做的是在module.exports.runquery参数中传递包含sql的字符串。有没有办法做到这一点,或者更简单的方法来获取一串sql到executeStatement?
答案 0 :(得分:1)
您可以在请求对象中附加包含sql查询的属性:
server.js
const app = require('express')()
const {runQuery} = require('./query')
app.get('/', function (req, res) {
req.sqlQuery = "INSERT SQL HERE"
runQuery(req, res)
})
query.js
module.exports.runQuery = function(req, res) {
connection.on('connect', function(err) {
executeStatement()
})
function executeStatement() {
request = new Request(req.sqlQuery, function() {})
}
}
或者你也可以通过middlware来实现:
function middleware(req, res, next) {
req.sqlQuery = "INSERT SQL HERE"
next()
}
app.get('/', middleware, runQuery)
答案 1 :(得分:0)
使用exports.function_name
代替module.exports
,您可以使用您想要的任何参数。 module.expots用于导出对象而不是函数。虽然exports.func_name可用于从文件中导出函数。
示例:
exports.function_name = function (params){
. . .
}
然后使用:
var helper = require('path to module')
helper.function_name(params)
答案 2 :(得分:0)
将SQL字符串添加为另一个参数。
module.exports.runQuery =function(req, res, sqlQuery){
//gets connection
connection.on('connect', function(err) {
console.log("success");
//if connection works run the request
executeStatement(sqlQuery);
});
function executeStatement(sqlQuery) {
request = new Request(sqlQuery, function(err, rowCount){
然后在调用runQuery
。
var something = require('file');
sqlQuery = "YOUR QUERY HERE";
something.runQuery(req, res, sqlQuery);
如果您仅使用runQuery方法,则名称暗示。那你就不需要req, res
了。更好的方法是
module.exports.runQuery =function(sqlQuery, callback){
//gets connection
connection.on('connect', function(err) {
console.log("success");
//if connection works run the request
result = executeStatement(sqlQuery);
callback(result);
});
function executeStatement() {
request = new Request(sqlQuery, function(err, rowCount){
//after finishing
return result;
}
然后打电话
var something = require('file');
sqlQuery = "YOUR QUERY HERE";
something.runQuery(sqlQuery, function(result) {
res.send(result);
});