Open pgherveou opened 12 years ago
Hi TJ express-expose define the following function to create a string representation of objects
function string(obj) { if ('function' == typeof obj) { return obj.toString(); } else if (obj instanceof Date) { return 'new Date("' + obj + '")'; } else if (Array.isArray(obj)) { return '[' + obj.map(string).join(', ') + ']'; } else if ('[object Object]' == Object.prototype.toString.call(obj)) { return '{' + Object.keys(obj).map(function(key){ return '"' + key + '":' + string(obj[key]); }).join(', ') + '}'; } else { return JSON.stringify(obj); } }
This works well except when used with mongo ObjectId object, where I end up with this serialisation
window.someId = window.someId || {}; someId["_bsontype"] = "ObjectID"; someId["id"] = "OÏ\u001a¾Å°U\u0000\u00000";
for my use case, I could replace the Object.prototype.toString statement with obj.toString (toString return string representation on ObjectId)
... // else if ('[object Object]' == Object.prototype.toString.call(obj)) { else if ('[object Object]' == obj.toString.call(obj)) {
Could the function be exposed somehow so I can inject my customisations ? Or do you see a better solution for this kind of issues ?
we should probably add regular toJSON support, that could be used
That sounds like a good idea in my case i ended up to write something like that
res.expose("me = " + (JSON.stringify(user.toJSON())) + ";");
Hi TJ express-expose define the following function to create a string representation of objects
This works well except when used with mongo ObjectId object, where I end up with this serialisation
for my use case, I could replace the Object.prototype.toString statement with obj.toString (toString return string representation on ObjectId)
Could the function be exposed somehow so I can inject my customisations ? Or do you see a better solution for this kind of issues ?