如何获取和传递json从模型到控制器?

时间:2019-05-06 23:26:58

标签: node.js express

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

您的getUrls函数是异步的,它将返回promise,因此请执行以下操作

const data = new Urls();
app.get(/api/urls, (req, res) => {
data.getUrls().then(response=>{
res.send(response);

})

}