我正在尝试从NextJS Api Route获取YouTube Data API中的数据(这意味着是一个cron函数)。
我在获取数据时使用了await关键字(getPlaylistData()函数),但我总是得到res未定义的错误。API调用在没有console.log(res.status)的情况下通过并返回status 200,所以我知道API调用是好的。
此外,我在service. playlistItems. list的回调中的console.log()函数中获得了正确的输出。console.log(res.status)似乎在getPlaylistData()函数完成之前运行。
我是否误解了async/await的工作方式?任何建议都很感激。提前感谢!
其他一些可能有帮助的信息:操作系统:Windows 11NextJS 13(Beta),启用了应用程序目录IDE:WebStorm我正在使用Postman测试API路由调用。
代码
const {google} = require('googleapis')
const service = google.youtube('v3');
export async function GET() {
const res = await getPlaylistData()
// console.log(res.status);
return new Response("Success", {
status:200
})
}
async function getPlaylistData() {
const dataRes = await service.playlistItems.list({
auth: process.env.API_KEY,
part: "snippet,contentDetails,status",
playlistId: process.env.UPLOADS_ID,
}, function(err:any, res:any) {
if (err) {
console.log("The API returned an error: " + err);
return;
}
let playlistItems = res.data.items;
if (playlistItems.length == 0) {
console.log("No playlistItems found");
} else {
console.log('This channel\'s latest video is: ' + playlistItems[0].snippet.title)
console.log(typeof(playlistItems))
}
})
return dataRes;
}
1条答案
按热度按时间ippsafx71#
从getPlaylistData函数返回Promise起作用。