我有两个 JavaScript 文件, main.js:- 执行数据库查询并将结果存储在“行”中的一个 samp.js:- 调用 main.js 的一个 我的问题是,如何将“行”从 main.js 传递到 samp.js,尝试了 module.exports、prototypes,但无济于事,我知道这是一个简单的问题,但这类简单的问题没有文档,没有帮助很难解决,
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 问题都没有将函数变量传递到其他文件,请帮忙
最佳答案
您正在使用异步方法 (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);
});
关于javascript - 将查询结果传递到另一个node.js页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41503687/