【发布时间】:2014-08-18 03:55:51
【问题描述】:
我正在尝试将多张用户照片上传到 parse.com 并将它们与用户对象相关联。我正在使用 javascript sdk https://www.parse.com/docs/js_guide#objects-types 我能够成功地将照片保存为文件对象。但是当我尝试在用户对象/表中构建一个数组列时,sdk 会出错。
我在保存用户对象时收到错误JSON.stringify cannot serialize cyclic structures.。
profileController.js
// uploads photo to rest api given local file_uri
$scope.addPhoto = function() {
var file = new Parse.File("profile-image.jpeg", { base64: $scope.imageData });
file.save().then(function(res) {
console.log('success', res);
var array = ['foo', file];
$scope.user.set('photos', array);
$scope.user.save();
}, function(error) {
console.log('error', error);
});
};
当被序列化的对象持有对自身的引用时,会出现此错误。那么我的问题是 - 有没有办法将所有用户图像文件与 parse.com 上的用户对象相关联?理想情况下作为数组列,因为我知道每个用户的个人资料图像永远不会超过 5 个。
【问题讨论】:
-
这是 sdk stackoverflow.com/questions/25297590/… 中的一个开放错误
-
通过使用另一个类来保存包含文件的数组来避免“循环”错误。在 _User 中添加一列,该列是指向包含照片数组的新 Class 对象的指针。任何时候只要你想要 _User 时,做一个获取 _User 和 Class.pic.arrayHolder 的平面查询并不难。
-
@RobertRowntree 现在我只是在用户上存储一个由文件的 url 组成的数组列。如果我启动垃圾收集正确,这可能会中断?你也可以写下你的建议作为答案吗?图表会很棒
-
它的解析。随心所欲。不用担心 GC
-
@RobertRowntree 让我来限定它。 Parse 说,如果您启动 GC,所有未引用文件都将被删除。我的问题是,如果我只是将 urlstring 保留在某个表中,那是一个参考吗?我想不是。我认为 GC 减少 refs 就像指针列之类的。