我正在使用Angular,NodeJS,MYSql
我需要获取其他函数中mysql查询的返回值。那是可能的
就像下面的代码
我需要从其他函数的查询中获取详细信息,但是我无法获取用户地址的详细信息。
有任何解决方案以获取详细信息吗?
谢谢
exports.getUserDetails= (req, res) => {
sql = 'SELECT * FROM users ';
connection.query(sql, (error, results, fileds) => {
if(error) {
res.send({
"success" : false,
"message" : "Error : "+error.message
});
}
else {
if(results.length >0) {
let users = [];
results.forEach(user => {
let addressDetas = this.getUserAddress(user.id);
let userdata = {}
userdata = user;
userdata.address = addressDetas;
users.push(userdata);
});
res.send({
"success" : true,
"message" : "No Record ",
"result" : users
});
}
else {
res.send({
"success" : true,
"message" : "No Record ",
"result" : results
});
}
}
});
}
exports.getUserAddress= (userid) => {
sql = 'SELECT * FROM address WHERE user_id = "'+userid+'" ';
connection.query(sql, (error, results, fileds) => {
if(error) {
return error;
}
else {
return results;
}
});
}
答案 0 :(得分:0)
返回的不是getUserAddress
,而是传递给connection.query
的回调。如果要捕获查询结果,则需要将自己的回调函数(通常作为最后一个参数)传递给getUserAddress
。但是,有重要的语法功能可帮助您以更具同步外观的方式编写代码,尤其是Promise
以及async
和await
关键字。如果使用这些功能重写函数,则可以按预期使用它。像这样:
const until = require ('util'):
exports.getUserAddress = async function (userId) {
const SQL = select etc....'';
const query = until.promisify(connection.query);
return await query(sql,);
}
并像这样使用它:
async function printAddress() {
const address =await getUserAddress(123);
console.log(address);
}