我有两个javascript文件, main.js: - 执行数据库查询和存储的结果是“行” samp.js: - 一个调用main.js的 我的问题是,我如何将main.js中的“行”传递给samp.js,尝试了module.exports,原型,但无济于事,我知道这是一个简单的问题,但这些简单的问题并没有有文档,没有帮助就很难解决,
main.js:
var mysql=require('mysql');
var row1;
function person(){}
var con=mysql.createConnection({
host:'localhost',
user: 'root',
password:'',
database:'imd2'
});
con.connect();
person.prototype.getdata= function(callback)
{
con.query("select * from users",function(err,rows)
{
//row1=rows;
console.log(rows);
//return(rows);
}
);
}
module.exports=person;
这里“console.log(rows)”工作,但是当我尝试将它返回到samp.js时,它不起作用
Samp.js
var person=require("./main");
var person1=new person();
person1.getdata()
//var x=person1.getdata()
//console.log(x)
你能告诉我我犯的错误在哪里,我搜索到的每个stackoverflow问题都没有传递给其他文件的函数变量,请帮忙
答案 0 :(得分:0)
您正在使用异步方法(con.query
),如果它是同步的。在异步方法中,您不能使用return语句返回值。你必须调用一个回调函数。
在main.js中:
person.prototype.getdata= function(callback)
{
con.query("select * from users",function(err,rows)
{
callback(rows);
});
}
在Samp.js:
person1.getdata(function(rows) {
// use rows here
console.log(rows);
});