为什么显示连接未定义?

时间:2016-11-09 07:17:47

标签: javascript node.js

我尝试使用 connection.js 文件中的connection并使用{{1}在不同的文件 webFrontend.js 中使用它对象。现在我在运行服务器上得到的是:

exports

这意味着{ "Result": "undefinedThis is result" } 未定义。为什么会这样?如果connection在同一个( webFrontend.js )文件中创建,connection工作正常,但问题是我在<{1}}中使用getConnection相同的导出函数strong> connection.js 因此getConnection未定义错误:

以下是2个必要的文件(路径文件没有问题),它解释了我在做什么:

connection.js

connection

webFrontend.js

var mysql = require('mysql');
exports.connExport = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'rockcity_followme'
    });
    if(connectionPool) {
        connectionPool.getConnection(function (err, connection) {
            if (err) {
                return err;
            } else {
                return connection;
            }
        });
    }else{
        var abc="return error";
        return abc;
    }
}

2 个答案:

答案 0 :(得分:0)

不需要.js文件扩展名,它会自动为您添加。

以下代码使用标准的错误优先回调

<强> webFrontend.js

var connection = require('../Routes/connection');
exports.getIndivRecords = function(req, res, next){

  // connection takes a standard error-first callback
  connection(function(err, conn){
    if (err) {
      // Handle the error returned
      console.log(err);
    }
    // The database connection is available here as conn
    console.log( "Connection:" + conn);

    // presumably you want to do something here
    // before sending the response

    res.send({
      Result: conn + "This is result"
    });
  });
  return next();
};

<强> connection.js

var mySQL = require('mysql');
var connectionPool = mySQL.createPool({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'rockcity_followme'
});
var getConnection = function (cb) {
  connectionPool.getConnection(function (err, connection) {
    // pass the error to the callback
    if (err) {
      return cb(err);
    }
    cb(null, connection);
  });
};
module.exports = getConnection;

答案 1 :(得分:0)

首先,@ Dan Nagle不需要.js

第二,您正在获取连接undefinded,因为该方法仍未返回结果。

使用promise调用Connection.js方法

您的节点是单线程异步执行, 他等待方法返回结果

1)你的javascript问题是那个

var connection=connObj.connExport();
创建阶段connection中的

由javascript定义为undefined和as connObj.connExport();仍未回复 它执行了这个函数,其中连接未定义

exports.getIndivRecords= function(req, res, next){
res.send({
    Result: connection+"This is result"
});

使用承诺首先阅读此内容,以便您可以了解有关承诺和回调的内容,如果您无法解决而不是评论我将使用它。但首先您尝试.Thanku

Understanding promises in node.js

好的尝试我在这里使用了承诺

var connObj = require('../Routes/connection');
connObj.connExport().then(
    function (connection) {
        exports.getIndivRecords = function (req, res, next) {
            res.send({
                Result: connection + "This is result"
            });
            return next();
        };
    }).catch(function (err) {
    res.status(400).send(err);
    return;
});




var mysql = require('mysql');
exports.connExport = function () {
    return new Promise(function (fulfill, reject) {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'rockcity_followme'
    });
    if (connectionPool) {
        connectionPool.getConnection(function (err, connection) {
            if (err) {
                return reject(err);
            } else {
                return fulfill(connection);
            }
        });
    } else {
        var abc = "return error";
        return reject(abc);
        }
    });
}