【发布时间】:2014-05-29 14:33:36
【问题描述】:
我正在尝试在 MongoDB 中保存一个 3D 数组,所以显然我决定将数据保存为 JSON。 为简单起见,我尝试保存每周食物菜单,因此数组维度为:周 x 天 x ArrayOfMenuItems。
Restaurant.js(模型)
menuItems: {
type: 'json',
defaultsTo: null
}
这是我创建并希望解析为 JSON 的 result 对象:
[ ,
[ ,
,
[ '538498de6a965778228e7e0e' ],
[ '538498ed6a965778228e7e0f' ],
[],
[],
[] ],
[ ,
,
[ '538498de6a965778228e7e0e', '538499156a965778228e7e11' ],
[],
[],
[],
[] ],
[ , , [], [], [], [], [] ],
[ , , [], [], [], [], [] ]
]
JSON.stringify(结果):
[null,[null,null,["538498de6a965778228e7e0e"],["538498ed6a965778228e7e0f"],[],[],[]],[null,null,["538498de6a965778228e7e0e","538499156a965778228e7e11"],[],[]
,[],[]],[null,null,[],[],[],[],[]],[null,null,[],[],[],[],[]]]
然后我将它保存到数据库中:
restaurant.menuItems = JSON.stringify(result);
restaurant.save(function(err) {
if (err) return res.serverError("Failed to save menu items");
});
在下一次通话中,当我尝试解析 restaurant.menuItems 时,我得到“未捕获的异常:意外令牌”,
console.log('BEGIN-{0}-END'.format(restaurant.menuItems)); // see print
var currentItems = JSON.parse(restaurant.menuItems); // throws exception
但是,这并不奇怪,因为调用 JSON.parse 之前的打印消息给出:
BEGIN-,,,538498de6a965778228e7e0e,538498ed6a965778228e7e0f,,,,,,538498de6a965778228e7e0e,538499156a965778228e7e11,,,,,,,,,,,,,,,,,,-END
我在这里做错了什么,应该如何使用“json”类型的属性? 我一定是做错了什么,但没有使用它的文档或示例。
如果我将“字符串化 JSON 文本”作为字符串保存在数据库中,我相信我可以找到解决方法,但这看起来很难看。
有什么想法吗?
【问题讨论】: