Monday, April 20, 2015

Simple Meteor XML Feed

Problem:

You need an xml feed from a mongo database in meteor.

Solution: 

ironrouter, xmlbuilder

1) Command line: meteor add iron:router

2) common/router.js
Router.route('/myfeed.xml', {
    name: 'myfeed', //optional
    where: 'server', //important to make sure that the function is synchronous
    action: function() {
        var xmlData = myfeedExport(); //grabs your data
        this.response.writeHead(200, {'Content-Type': 'application/xml'}); //outputs data to visitor
        this.response.end(xmlData);
    }
});

3) server/method.js
myfeedExport = function () {
    var xmlBuilder = Meteor.npmRequire('xmlbuilder'); //needed to use xmlbuilder
    var feed = xmlBuilder.create('feed'); //sets up the "parent" xml object
    Widgets.find({status: "Active"}).forEach(function(widgetData) {
        var feedwidget = feed.ele('widget');
        feedwidget.ele('name', widgetData.name);
        feedwidget.ele('data').dat(widgetData.data); //create <data><![CDATA[yourdata]]></data>"
    });
    return feed.end({pretty: true})
}

4) packages.json
{
  "httpreq":"0.4.2",
  "xmlbuilder": "2.4.4",
}

No comments:

Post a Comment