【问题标题】:How can I merge this function together如何将此功能合并在一起
【发布时间】:2017-10-01 21:21:17
【问题描述】:

现在我有这段代码可以在我运行 /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 urls = Object.keys(result)
                     .filter(key => result[key].last_res > 5)
                     .map(key => ({url: '/' + result[key].url_site + '/'}))
    }

当我尝试在 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' } }

我需要将此代码合并到上面的函数中

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 );
    });
    });
}

我需要在 gotData(data) 中返回 url 来创建 sitemap.xml。那么如何将这段代码合并在一起

【问题讨论】:

  • return sitemap;gotData 的末尾,然后在另一个函数的顶部,调用sitemap = gotData(data);...?
  • 这段代码没有任何意义。 var sitemap = sm.createSitemap 无法访问,因为它是在返回后调用的。
  • 我已经更新了代码

标签: javascript angularjs arrays node.js express


【解决方案1】:

遗漏了许多代码,但常见的方法是:

function gotData (data) {
    const result = data.val();
    const urls = Object.keys(result)
        .filter(key => result[key].last_res > 5)
        .map(key => ({url: 's/price/' + result[key].url_site + '/'}));

    const sitemap = sm.createSitemap({     // supposing it is sync...
        hostname: 'xxx.com',
        cacheTime: 600000,
        urls
    });

    return sitemap;
}

app.get('/sitemap.xml', (req, res) => {
    const siteMap = gotData(data???);
    sitemap.toXML(siteMap, (err, xml) => {
        if (err) return res.status(500).end();

        res.header('Content-Type', 'application/xml');
        return res.send( xml );
    });
});

【讨论】:

    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2022-11-07
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多