Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase异步调度程序问题_Javascript_Firebase_Async Await_Google Cloud Functions - Fatal编程技术网

Javascript Firebase异步调度程序问题

Javascript Firebase异步调度程序问题,javascript,firebase,async-await,google-cloud-functions,Javascript,Firebase,Async Await,Google Cloud Functions,我对firebase和异步javascript都是新手。我正试图在firebase中创建一个计划任务,从一个集合中获取一组rss URL,对其进行解析并将其存储在另一个集合中,但我遇到了错误:4 DEADLINE_Excepended:DEADLINE Excepended at Object.callErrorFromStatus在执行时 const refreshRSS = functions.pubsub.schedule('every 30 mins').onRun(async cont

我对firebase和异步javascript都是新手。我正试图在firebase中创建一个计划任务,从一个集合中获取一组rss URL,对其进行解析并将其存储在另一个集合中,但我遇到了错误:4 DEADLINE_Excepended:DEADLINE Excepended at Object.callErrorFromStatus在执行时

const refreshRSS = functions.pubsub.schedule('every 30 mins').onRun(async context => {
    let newRSS = addRSS();
    return await newPodcasts;
});

addRSS = async () => {
    const newRSSFeed = new Array();
    let rssURLs = await db.collection('rssURLs').get();
    rssURLs.forEach(async rssURLsObject=>{
        rss = rssURLsObject.data();
        let rssData = await parser.parseURL(rss.url);             
        newRSSFeed.push(db.collection('rss').doc(encodeURIComponent(rss.url))
        .set(podcast));

    })
    return newRSSFeeds;
}
我还尝试返回refreshRSS中的Promise.all(newRSS),但它抛出了另一个错误,声明:is not iterable。
我不确定firebase的返回参数究竟是什么。

当您必须在循环中解析promise时,请尝试使用map。这将有助于:

const refreshRSS=functions.pubsub.schedule('every 30 min').onRun(异步上下文=>{
让newRSS=等待addRSS();
返回等待新播客;
});
addRSS=async()=>{
const newRSSFeed=新数组();
让rssURLs=wait db.collection('rssURLs').get();
让promise=rssURLs.map(异步rssURLsObject=>{
rss=rssURLsObject.data();
让rssData=wait parser.parseURL(rss.url);
让con=await db.collection('rss').doc(encodeURIComponent(rss.url)
newRSSFeed.push(con)
.set(podcast));
})
等待承诺。全部(承诺)
返回新的rssfeeds;

}
当您必须在循环中解析承诺时,请尝试使用map。这将有助于:

const refreshRSS=functions.pubsub.schedule('every 30 min').onRun(异步上下文=>{
让newRSS=等待addRSS();
返回等待新播客;
});
addRSS=async()=>{
const newRSSFeed=新数组();
让rssURLs=wait db.collection('rssURLs').get();
让promise=rssURLs.map(异步rssURLsObject=>{
rss=rssURLsObject.data();
让rssData=wait parser.parseURL(rss.url);
让con=await db.collection('rss').doc(encodeURIComponent(rss.url)
newRSSFeed.push(con)
.set(podcast));
})
等待承诺。全部(承诺)
返回新的rssfeeds;

}
我无法使用map对firebase提供的数据进行迭代。获取以下错误:TypeError:rssURLs.map不是函数rssURLs不是数组?我的错,get()方法返回快照对象。要获取数组,我需要使用.docs。但即使这样做了,我仍然会得到超时,错误如下:错误:请求在超时时在60000ms后超时。setTimeout(/workspace/node_modules/rss parser/lib/parser.js:101:23)同样是我的错,在函数中我解析了newRSSFeeds而不是promise。现在开始工作了!我无法使用map对firebase提供的数据进行迭代。获取以下错误:TypeError:rssURLs.map不是函数rssURLs不是数组?我的错,get()方法返回快照对象。要获取数组,我需要使用.docs。但即使这样做了,我仍然会得到超时,错误如下:错误:请求在超时时在60000ms后超时。setTimeout(/workspace/node_modules/rss parser/lib/parser.js:101:23)同样是我的错,在函数中我解析了newRSSFeeds而不是promise。现在开始工作了!