我正在使用:node,express,routing-controllers
当我尝试响应大型json对象时,需要60多秒。 有我的代码:
@Get("/")
getAll() {
return db.get('phones')
}
如果我响应相同的json文件,则只需几秒钟。 有我的代码:
@Get("/")
getAll(@Req() request: any, @Res() response: any) {
return new Promise( (resolve, reject) => {
return (response.sendFile(path.resolve(__dirname, "../../db/phones.json")));
})
}
我怎样才能以更好的方式解决它?
(我不会在延迟加载时使用)
答案 0 :(得分:0)
如果在未从数据库中查询时相同的数据需要几秒钟,则可以安全地假设问题出在数据库查询中。
大多数数据库问题都可以通过适当的索引来解决。尝试独立运行查询,查看需要多长时间,然后添加相关索引,速度将急剧增加。在您的情况下,请记住,在将2.3Mb发送到客户端之前,您的查询需要从数据库中提取2.3Mb的数据。很可能,无论如何,你最好还是使用文件。
如果您确定数据库不是问题,请在代码中删除承诺,然后尝试:response.send(db.get('phones'))
答案 1 :(得分:0)
xShirase解决我的问题。 有我的新代码:
@Get("/")
getAll(@Req() request: any, @Res() response: any) {
return new Promise((resolve, reject) => {
db.get('phones').then(phones => {
response.send(phones)})
})
}