[英]get a callback from a seperate file in node js
I have two file in my node js app server.js
and database.js
我的节点js应用程序
server.js
和database.js
有两个文件
//server.js
var db = require('./database.js');
var express = require('express');
var app = express();
var server = app.listen(8081, '000.00.00.000',function(){
var host = server.address().address;
var port = server.address().port
console.log('App listening');
})
app.get('/',function(req,res){
res.end("Hello Jamian");
})
app.get('/insertuser',function(req,res){
console.log("insert user called")
var result = new db.insertUser();
console.log("result " + result)
});
and 和
//database.js
var mysql = require('mysql');
var con = mysql.createConnection({
host:"localhost",
user:"0000",
password:"0000",
database: "aaaa"
});
con.connect(function(err){
if(err) throw err;
console.log("DB Connected");
});
module.exports = {
insertUser: function () {
console.log("module exported");
var SQL_insert_user = "insert into users(username,useremail,usermobile,userpassword,activetoken) values('darren','darren@yahoo.in','980000000','password','ASKDO5615F')";
con.query(SQL_insert_user,function(err,result){
if(err) throw err;
console.log("data inserted");
return result;
});
},
bar: function () {
console.log("bar called")
}
};
I need a callback from the insertUser function in database.js so i can call a res.end("data inserted"). 我需要从database.js中的insertUser函数进行回调,以便可以调用res.end(“插入数据”)。 however it seems con.query is going async, hence I am getting a blank value when I try to log result in server.js from get/insertuser in server.js
但是,似乎con.query会异步运行,因此当我尝试从server.js中的get / insertuser将结果记录到server.js中时,我得到了一个空白值
data inserted
insert user called
module exported
result {}
data inserted
Use promises. 用诺言。 Either native or from a library.
本机或来自库。
Here's how you could do it with a promise: 这是您可以兑现承诺的方法:
insertUser: function(){
return new Promise(function(reject, resolve){
var SQL_insert_user = "insert into users(username,useremail,usermobile,userpassword,activetoken) values('darren','darren@yahoo.in','980000000','password','ASKDO5615F')";
con.query(SQL_insert_user,function(err,result){
if(err) reject(err);
else resolve(result);
});
});
},
Then you can use it your other file like this: 然后,您可以将其用作其他文件,如下所示:
insertUser()
.then(function(result){
// do something with the result
})
.catch(function(err){
// Oh no! there was an error!
});
in your server js do 在您的服务器js中
app.get('/insertuser',function(req,res){ console.log("insert user called") var result = new db.insertUser(function(result) { console.log("result " + result) }); });
and in your database do 并在您的数据库中
module.exports = { insertUser: function (cb) { console.log("module exported"); var SQL_insert_user = "insert into users(username,useremail,usermobile,userpassword,activetoken) values('darren','darren@yahoo.in','980000000','password','ASKDO5615F')"; con.query(SQL_insert_user,function(err,result){ if(err) throw err; console.log("data inserted"); cb(result); }); }, bar: function () { console.log("bar called") } };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.