Search code examples
node.jsswig-template

How to output JSON with swig in nodejs


I tried json filter, but I get "json" filter not found error. What I'm I doing wrong?

Error: Filter "json" not found at Object.exports.wrapFilter (......./node_modules/swig/lib/helpers.js:310:11)
<script type="text/javascript">
        {{ places|json }}
</script>

object is passed from mongodb

this.displayMainPage = function(req, res, next) {
    "use strict";

    places.getPlaces(10, function(err, results) {
        "use strict";

        if (err) return next(err);

        return res.render('places_template', {
            places: results
        });
    });
}

Edit: I'm trying to output json to pass to google maps and display the same data in html


Solution

  • For versions of Swig prior to 1.0, the json filter was instead named json_encode:

    {{ places|json_encode }}
    

    And, for compatibility, 1.0 and later keep json_encode as an alias of json.


    Though, you should also consider upgrading Swig:

    $ npm install swig@0.14
    npm WARN deprecated swig@0.14.0: v1.0.0 is a complete rewrite of Swig
    from the ground up. Previous versions are no longer supported