Javascript 在nodeJS中导出Mysql连接
在我的database.js中Javascript 在nodeJS中导出Mysql连接,javascript,node.js,node-mysql,Javascript,Node.js,Node Mysql,在我的database.js中 var Mysql = require('Mysql'); var Jwt = require('jsonwebtoken'); var bcrypt = require('bcrypt'); var supersecretkey = 'JMDub_Super_Secret_key'; var config = require('./config'); var signupErrors = require('./Signuperrors.js'); var s
var Mysql = require('Mysql');
var Jwt = require('jsonwebtoken');
var bcrypt = require('bcrypt');
var supersecretkey = 'JMDub_Super_Secret_key';
var config = require('./config');
var signupErrors = require('./Signuperrors.js');
var sucessMsg = require('./SucessMessages.js');
var App_errors = require('./error.js');
var query = require('./queryDB.js');
var connection = Mysql.createConnection({
"host": "******",
"user": "****",
"password": "***",
"database": "***"
});
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
//Sign Up Methods
var createUser = function createwithCredentails(post,callback) {
bcrypt.hash(post.password, 10, function(err, hash){
//console.log('Cache Hash : +',hash);
var createUserQuery = connection.query('INSERT INTO users SET ?',{"email":post.email,"password":hash,"username":post.username},function(err,result){
if (err) {
if (err.code == 'ER_DUP_ENTRY') {
//console.log(err.code);
callback(signupErrors.error_5000);
}
else callback(App_errors.error_1003);
}
if (result) {
callback(sucessMsg.success_signup);
}
});
});
}
//connection.query('SELECT * FROM Users Where Username = '' AND Password = ''');
var validateUser = function ValidateUserWithUserNameAndPassword(post,callback) {
var UserCheckQuery = connection.query('SELECT * FROM users WHERE email="'+post.email+'"',function(err, results, fields) {
if (err){
console.log(err);
callback(App_errors.error_1000);
}
if (results.length == 1) {
//console.log(results[0].password,post.password);
var givenPassword = post.password;
var DBhash = results[0].password;
bcrypt.compare(givenPassword, DBhash,function(err, res) {
if (res) {
console.log('Password matched');
var token = Jwt.sign({"email":post.email,"username":post.username},supersecretkey, {
expiresIn: 60*60*5 // expires in 5 hours
});
callback({
message:{
"success":1,
"description":"sucessfully logged in - please cache the token for any queries in future",
"environment":"test",
"errorCode":null
},
"token":token
});
}
if (!res) {
console.log('password doesnt match');
callback(signupErrors.error_6000);
}
if (err) {
console.log('Error Comparing Passwords');
callback(App_errors.error_1004);
}
});
}
else{
callback(signupErrors.error_6000);
}
});
};
var isauthenticate = function isauthenticated(post,route,callback) {
if (post.headers.token) {
Jwt.verify(post.headers.token, supersecretkey, function(err, decoded) {
if (decoded) {
//console.log(decoded);
//From this part the user is Sucessully Authenticated and autherization params can be extracted from token if required
//Write Business Logic in future as per the requirement
//Operation 1 - Update Profile
//Profile Details consists of {1.first name 2.last name 3. profile pictur(base 64 encoded) 4.further settings in future that can be added to DB if required}
if (route == '/update-profile') {
query.updateProfile(connection,decoded.email,post.body,function(response) {
callback(response);
});
}
//callback({"message":"is a valid token"});
}
if (decoded == null) {
console.log('is not a valid token');
//callback(App_errors.error_1000);
}
if (err) {
console.log('error verifying token');
callback(App_errors.error_1000);
}
});
}
else{
callback(App_errors.error_1001);
}
};
module.exports = {
validateUser:validateUser,
createUser:createUser,
isauthenticate:isauthenticate,
connection:connection
}
我正在将连接对象导出到queryDB.js文件。但当我尝试记录导出的连接对象时,我得到了未定义的对象。为什么会这样
当我将连接对象作为函数参数传递时,一切正常。不知道为什么
下面是queryDB.js文件
var errors = require('./error.js')
var Dbconnection = require('./Database.js').connection;
var updateProfile = function profiledata(connection,email,data,callback) {
console.log(Dbconnection);
if ((!data)|| (Object.keys(data).length < 1)) {
//console.log(data);
callback(errors.error_1001);
}
else{
callback({"message":"update Sucesss"});
//console.log(connection);
//var updateData = mapProfileDataTomodel(data);
//console.log(updateData);
connection.query('SELECT * FROM users WHERE email = "'+email+'"',function(err, result,feilds) {
if (err) throw err;
if (result) {
console.log(result);
}
});
}
}
var mapProfileDataTomodel = function mapProfileDataTomodel(data) {
var profileDataModel = {};
for (var key in data) {
//console.log('looping and mapping data');
if (data.firstname) {
profileDataModel.firstname = data.firstname;
}
if (data.lastname) {
profileDataModel.lastname = data.lastname;
}
if (data.profilepic) {
profileDataModel.profilepic = data.profilepic;
}
}
return profileDataModel;
}
module.exports = {
updateProfile:updateProfile
}
var errors=require('./error.js')
var Dbconnection=require('./Database.js').connection;
var updateProfile=函数配置文件数据(连接、电子邮件、数据、回调){
log(Dbconnection);
if((!data)| |(Object.keys(data.length<1)){
//控制台日志(数据);
回调(errors.error_1001);
}
否则{
回调({“消息”:“更新成功”});
//控制台日志(连接);
//var updateData=mapProfileDataTomodel(数据);
//console.log(updateData);
connection.query('SELECT*FROM users WHERE email=“”+email+””,函数(err、result、feilds){
如果(错误)抛出错误;
如果(结果){
控制台日志(结果);
}
});
}
}
var mapProfileDataTomodel=函数mapProfileDataTomodel(数据){
var profileDataModel={};
for(var输入数据){
//log(“循环和映射数据”);
if(data.firstname){
profileDataModel.firstname=data.firstname;
}
if(data.lastname){
profileDataModel.lastname=data.lastname;
}
if(data.profilepic){
profileDataModel.profilepic=data.profilepic;
}
}
返回profileDataModel;
}
module.exports={
updateProfile:updateProfile
}
我已经通过函数参数注释掉了连接对象日志
那么,为什么我无法获取导出的连接对象呢?但我在app.js文件中使用了相同的导出连接对象。它在那里工作得很好