我正在尝试从此代码中获取返回值,但是没有运气。由于某种原因,我放入mysql查询函数中的所有内容都变得不确定。我直接从查询内部返回值,让查询在其外部操作变量值,然后将其直接分配给变量。我没主意了
1。)
connection.query(sql, response = (err,rows) => {
if(row = condition){
return something;
}
}
2。)
var something
connection.query(sql, response = (err,rows) => {
if(row = condition){
something = somerow;
}
}
3。)
var myvar =connection.query(sql, response = (err,rows) => {
if(row = condition){
return something;
}
}
这些都不起作用。数字3返回一些乱码JSON。我能做什么?另外,这是函数的结构,如果有帮助的话。
型号:
exports.Something = () => {
connection.query(sql, response = (err,rows) => {
}
return anything
}
控制器:
exports.Thing = (req,res) =>{
var response = UserModel.Something();
return res.send(response);
}
答案 0 :(得分:0)
您正在尝试从callback
返回不起作用的内容。您可以使用以下回调:
exports.Something = (callback) => {
connection.query(sql, response = (err,rows) => {
if (err) {
callback(err)
} else {
callback(null, rows)
}
})
}
// In you controller
exports.Thing = (req,res) =>{
var response = UserModel.Something((err, rows) => {
if (err) {
// handle error
console.error(err)
} else {
res.send(rows);
}
});
}
或使用Promise
和async/await
,例如:
exports.Something = () => {
return new Promise((resolve, reject) => {
connection.query(sql, response = (err,rows) => {
if (err) {
reject(err)
} else {
resolve(rows)
}
})
})
}
// In you controller
// make the middleware async function
exports.Thing = async (req,res) =>{
try {
var rows = await UserModel.Something()
return res.send(rows);
} catch (e) {
// handle error
console.error(e)
}
}
使用async/await
可以处理try..catch
块中的错误。