JS错误为:var未定义。我怎样才能发送功能价值

时间:2017-05-04 03:49:02

标签: javascript angularjs arrays node.js express

现在,当我运行/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

那我该怎么办呢?

1 个答案:

答案 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);