我正在尝试使用node.js从数据库(sql)获取json数据,然后将其传递到app.get(express.js),但没有成功。
我有两个文件urls.js,它们应该从数据库中获取所有url,而在app.js中,我试图使用express.js创建api端点。如果我在其中编写查询并运行它,我已经设法在app.js中获取json数据,但是我不知道如何将其分成两个文件。
适用于app.js的代码
app.get('/api/urls', (request, response) => {
db.query('SELECT * FROM urls', (error, result) => {
if (error) throw error;
response.send(result);
});
});
我尝试将其分成两个文件,因此在urls.js(类似模型)中我可能会遇到类似的问题
class Urls {
async getUrls() {
const sql = `select * from urls`;
return await db.query(sql);
}
}
module.exports = Urls;
,然后在app.js(类似于控制器)中调用它:
const data = new Urls();
app.get(/api/urls, (req, res) => {
res.send(data.getUrls());
}
在两种情况下,结果都应为json
答案 0 :(得分:1)
您的getUrls函数是异步的,它将返回promise,因此请执行以下操作
const data = new Urls();
app.get(/api/urls, (req, res) => {
data.getUrls().then(response=>{
res.send(response);
})
}