添加参数到module.exports?

时间:2017-06-28 17:31:00

标签: node.js express

我有一个运行查询的模块,并使用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?

3 个答案:

答案 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);
});