我试图通过该类进行Nodejs数据库操作,我通过该路由的路由和方法到达模型,并且选择操作完成。 但是当我发送数据时,app.use中的数据“未定义”
路由代码
var Select = require('../models/queryClass');
obj = new Select();
router.use(function (req, res) {
res.json(obj.Data(req.method, req.path))
});
模型代码
class Select {
Data(metodh, path) {
if (metodh == "GET" && path == "/data") {
db.query("select * from data ", function (err, result) {
if (err) {
return err;
}
else {
return result
}
})
}
}
};
答案 0 :(得分:0)
问题在于匿名函数内部响应是异步发出的,而您实际上从未返回该函数外部的值。
尝试使用promises,它应该看起来像这样:
class Select {
Data(metodh, path) {
if (metodh == "GET" && path == "/data") {
return new Promise((resolve, reject) => {
db.query("select * from data ", function (err, result) {
if (err) {
reject(err);
}
else {
resolve(result);
}
})
});
}
}
};
要获得答案,您必须使用promise方法; (然后-抓住)
obj.Data(req.method, req.path)
.then(result => console.log(result))
.catch(err => console.log(err))
注意:我没有测试它,但是它应该可以工作。因为它是异步的,所以在您从未真正返回结果之前。