现在,当我运行/sitemap.xml
时,我有了这段代码来创建sitemap.xml database = firebase.database();
var ref = database.ref('urls');
ref.on('value', gotData, errData);
function errData(err){
console.log('Error!');
console.log(err);
}
function gotData(data){
result = data.val()
return Object.keys(result)
.filter(key => result[key].last_res > 5)
.map(key => ({url: '/' + result[key].url_site + '/'}));
var urls = gotData(data);
}
当我尝试在gotData(data)函数中运行console.log(urls)时,它返回为
{ salmon:
{ count: 1,
last_res: 10,
url_site: 'salmon' },
'salmon-food':
{ count: 1,
last_res: 601,
url_site: 'salmon-food' } }
我需要返回'网址'在gotData(data)中创建sitemap.xml。
var sitemap = sm.createSitemap({
hostname: 'xxx.com',
cacheTime: 600000,
urls: urls
});
app.get('/sitemap.xml', function(req, res) {
sitemap.toXML( function (err, xml) {
if (err) {
return res.status(500).end();
}
res.header('Content-Type', 'application/xml');
res.send( xml );
});
});
}
但现在它在var = sitemap上的错误为
urls: urls -> urls is not defined
那我该怎么办呢?
答案 0 :(得分:3)
您正在分配并返回一行。您需要定义变量然后返回它,或者直接返回结果而不分配变量。
return Object.keys(result)
.filter(key => result[key].last_res > 5)
.map(key => ({url: '/' + result[key].url_site + '/'}));
您还不清楚在urls
函数中定义要传递的sm.createSitemap()
变量的位置。确保它存在于您定义var sitemap
的范围内。
您可能错过了类似于以下内容的行:
var urls = gotData(data);