Ahora tengo este código para crear sitemap.xml cuando ejecuto /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 + '/'})) }cuando trato de ejecutar console.log(urls) en la función gotData(data), regresa como
{ salmon: { count: 1, last_res: 10, url_site: 'salmon' }, 'salmon-food': { count: 1, last_res: 601, url_site: 'salmon-food' } }Necesito fusionar este código con la función anterior
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 ); }); }); }Necesito devolver las URL en gotData (datos) para crear sitemap.xml. Entonces, ¿cómo puedo fusionar este código juntos?
Se pierden muchas piezas de código, pero el enfoque común sería algo como:
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 ); }); });