gpt4 book ai didi

node.js - Nodejs MySQL连接超时

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:00 24 4
gpt4 key购买 nike

当我运行应用程序时,它显示数据库已连接!

db.js

var mysql = require('mysql');
var settings = require('./config');
var db;
var exports = {};

exports.connectdb = function () {

db = mysql.createConnection(settings.Database);

db.connect(function(err){

console.log('connecting');
if(!err) {
console.log('Database is connected!');
return db;
} else {
console.log('Error connecting database!'+err);
return null;
}
});

};

module.exports = exports;

但是当我尝试从 user.js 连接数据库时,它显示连接为空/TypeError:无法读取未定义的属性“查询”

来自user.js的代码块

var exports = {};
var dbcon = require('../config/db.js');
var dbconn = dbcon.connectdb();

exports.login = function(email,password) {

var userdetails = { name:email, password:password};

var dbconn = dbcon.connectdb();
if ( dbconn == null ) console.log('still nul');


dbconn.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) {
if(err)
{
console.log(result[0]+' err');
return null;
}
});
};

module.exports = exports;

最佳答案

Node.js 本质上是异步的。您正在尝试以同步方式使用它。要实现此功能,您必须使用回调模式。下面是一个例子:

db.js

var mysql = require('mysql');
var settings = require('./config');
var exports = {};

exports.connectdb = function (callback) {

var db = mysql.createConnection(settings.Database);

db.connect(function(err){
callback(err,db);
});

};

module.exports = exports;

user.js

var exports = {};
var dbcon = require('../config/db.js');

exports.login = function(email,password) {

var userdetails = { name:email, password:password};

dbcon.connectdb(function(err, dbconn){
if ( err) //handle error


dbconn.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) {
if(err)
{
console.log(result[0]+' err');
}
});
});
};

module.exports = exports;

从上面的代码中您可以看到connectdb函数如何接受函数回调。连接数据库后,代码将执行该回调以发送结果。在 user.js 文件中,您现在可以传递回调函数并使用它为您提供的结果(数据库)。您可以找到有关 Node.js 异步特性的更多信息 here 。基本上,异步代码使用回调,同步代码使用 return 语句。从异步函数返回值通常会产生 null 结果,因为异步回调始终会在调用函数后“某个时候”触发。

关于node.js - Nodejs MySQL连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com