繁体   English   中英

在 NodeJS 中使用回调函数结果实现 res.render

[英]Using callback function result to implemlent res.render in NodeJS

我正在使用 oracledb for node 从数据库中获取数据。 获取数据后,我尝试在 express JS 中使用render()将数据发送到客户端。 代码是这样的——

配置文件

module.exports = {
  user          : "user",
  password      : "password",
  connectString : "*connstring*"  ,
  deliveredQuery: " SELECT COUNT (DISTINCT order_num) AS Cnt from orders where department = 'HR'
};

查询2.js

module.exports = function(callback) {//pass callback function and return with this
  var oracledb = require('oracledb');
  var dbConfig = require('./config.js');

  this.queryDB = function(query,callback) {
    oracledb.getConnection({
      user: dbConfig.user,
      password: dbConfig.password,
      connectString: dbConfig.connectString,
      deliveredQuery: dbConfig.deliveredQuery    
    }, function(err, connection) {
      if (err) {
        console.error(err.message);
        return callback(err);
      }
      connection.execute(query, function(err, result) {
        if (err) {
          console.error(err.message);
          doRelease(connection);
          return;
        }
        //console.log(result.metaData);
        //console.log(JSON.parse(result.rows[0][0]));
        doRelease(connection);
        return callback(null, JSON.parse(result.rows[0][0]))
      });
    });

    function doRelease(connection) {
      connection.release(function(err) {
        if (err) {
          console.error(err.message);
          return callback(err);
        }
      });
    }
  };
};

serv_ontime.js

var dbConfig = require('./config.js');
var res = require('./query2.js')();
var onTime_query = dbConfig.onTime_query;

module.exports = function (callback) {
    queryDB(onTime_query, callback)
};

应用程序.js

var express = require('express');
var path = require('path');
var app = express();
var port = process.env.PORT || 5000;

var serv_ontime = require('./serv_ontime.js');
app.use(express.static(path.join(__dirname, 'public')));
app.set('views', __dirname + '/src/views');   
var bookRouter= express.Router();
app.set('view engine','ejs');

    bookRouter.route('/')
          .get(function(req,res){
              serv_ontime(function(error, result){
                  res.render('index', 
                                    {title: 'Hello',
                                     rec: result
                                    });
              });
          });

现在,当我在 cmd 中执行node app.js 时,它显示以下错误 -

错误

谁能帮我理解我在这里做错了什么?

dbconfig.js 中的 onTime_query 在哪里:

var onTime_query = dbConfig.onTime_query;

你确定写了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM