是否有可能以某种方式在node.js服务器上实现angular.toJSON函数/方法。我只需要使用angular.toJSON()。
在将数据写入mongo数据库时,由于与'$'的哈希键错误,我得到了它。
或许有一个函数可以取代angular.toJSON ...
谢谢!
修改
Angular在ng-repeat中提供$ scope对象“&& hashKey”,以便它可以跟踪任何更改,如果发生更改,则更新DOM。当您将对象发送到节点服务器时,它仍然在其自身内部具有hashKey元素,并且它对节点中的大多数事物没有影响。但是当通过mongoose将$$ hashKey保存到mongo数据库时,它会抛出一个错误,即对象中的key和element的键不应该以'$'开头。
所以我们需要的是删除哈希键。有一个angular.toJSON()方法可以自动从对象中删除$$ hashKey,但它只能在客户端进行操作。
在node.js ste2425上使用带有replacer选项的JSON.strigify建议实现相同的方法。在最后,我创建了一个可以在node.js上实现的函数,该函数适用于我的问题(不知道它是否是最佳解决方案):
function angularToJSON(object) {
replacer = (key, val) => key.startsWith('$$') ? undefined : val;
var objectReplaced = JSON.stringify(object, replacer);
return JSON.parse(objectReplaced);
}
答案 0 :(得分:2)
这并不能复制角斗toJSON
,因为我并不完全确定它的内部运作。
但是,如果要在序列化时过滤/清理对象,可以使用标准JSON.stringify
可用的替换方法const obj = {
one: 10,
$$two: 'ignore',
three: {
$$four: 'troll',
five: 50
},
array: [{
$$tt: 10,
bob: 5
},
5
]
},
replacer = (key, val) => key.startsWith('$$') ? undefined : val;
console.log(JSON.stringify(obj, replacer));
// {"one":10,"three":{"five":50},"array":[{"bob":5},5]}
请参阅fiddle
注意我确定在某些情况下我读过该密钥可能是undefined
但是无法在MDN上找到它或者在小提琴中复制它,可以用于反序列化。仅供参考。