Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing an object with circular references from server to client-side Javascript while retaining circularity

I'm trying to pass an object with circular references from node.js server to client-side javascript.

Server (node.js):

var object = { circular: object }
//....
app.get('/', function(req, res){    
    res.render('index.jade', {object: object});
});

Client-side Jade/Javascript

script var object = !{JSON.stringify(object)};

Here I get the error that object contains circular references.

Any way to get the object in client-side javascript, with or without circular references?

like image 305
laggingreflex Avatar asked Apr 16 '14 18:04

laggingreflex


1 Answers

Douglas Crockford has a solution for this that I have successfully used to solve this problem before: Cycle.js

instead of just using stringify and parse you would first call decycle and restore with retrocycle

var jsonString = JSON.stringify(JSON.decycle(parent));
var restoredObject = JSON.retrocycle(JSON.parse(jsonString));

JSFiddle

like image 127
Preston S Avatar answered Sep 22 '22 19:09

Preston S