问题描述
我正在使用 NodeJS 应用程序,当用户向{{1}发送GET
时,该应用程序将从sqlite-3文件中获取电影名称和描述。 }。将对象推到数组时,似乎有些东西不见了。我不明白我所缺少的。该对象不会被推送到数组,并且在我/films
将其作为响应返回时始终显示为空[]。
res.json()
解决方法
您的问题是Express在数据库检索任何值之前先返回响应对象。要解决此问题,通常需要将其移到回调函数中。
在您的情况下,尽管db.each()
方法实际上接受2个函数。第一个是callback
,它在检索到每个值之后运行,根本没有帮助。第二个文档在文档中称为complete
,它完全可以满足您的需求。
这是db.each()
维基中node-sqlite3
的{{3}}。
这样,您可以通过以下方式编写代码:
db.each(
'select * from film',(err,row) => { /* Does normal stuff */ }),num) => { /* Sends response to client */
res.json(films);
console.log(`Retrieved ${num} films`); // (Just to show what the 2nd argument does)
}
);
请记住,如果您的电影数据库不是特别庞大,文档实际上建议使用db.all
方法。