Parse.com文件数组

时间:2015-06-26 14:53:02

标签: arrays file parse-platform

我正在将图像上传到Parse.com,并在成功的响应中返回文件名(生成的)和文件URL。这对于单个关联来说很好,但是我的一个类需要有多个文件到一个条目。

目前正在尝试制作一个Pointers / File引用数组,以便它们在数据浏览器中显示为蓝色按钮。问题是它不会创建这些蓝色按钮,它只是将对象抛出到数组中。

    $scope.saveCreatedExercise = function(exercise) {
        imageStore = []
        for (var i = 0; i < exercise.images.length; i++) {

            var data = {
                "__type": "File",
                "name": exercise.images[i]._name
            }
            imageStore.push(data);
        };

        ParseFactory.provider('ClientExercises/').create({
            exerciseDescription: exercise.exerciseDescription,
            exerciseName: exercise.exerciseName,
            user: {
                "__type": "Pointer",
                "className": "_User",
                "objectId": Parse.User.current().id
            },
            images: imageStore

        }).success(function(data) {
            $state.go('app.exercises', {
                loadProgramme: data.objectId
            });
        }).error(function(response) {
            errorFactory.checkError(response);
        });

    } 

这甚至可以实现吗?

我的问题的关键在于我希望班级中的一个条目与许多文件相关联。

1 个答案:

答案 0 :(得分:1)

我有一个可行的解决方案,以防其他人遇到此问题。这种方法的重要性在于,在不保存实际的解析文件对象引用的情况下,当您使用这些设置进行文件清理时,所有引用的文件都将被删除。此方法可以防止这些文件被清除

我在我的实现中使用angularjs和解析javascript sdk。我遇到的问题是在将ParseFile对象添加到父对象数组字段时出现javascript错误“Uncaught TypeError:将循环结构转换为JSON”。

Angular v1.4.4,Parse JS v1.5

var parseObject = {{ existing parse object }}
var files = {{ existing array of files base64 encoded }}
var parseFiles = [];
var promises = [];

// loop through the files so first save them to parse cloud 
// (in my case these files were uploaded via ng-file-upload)
angular.forEach(files, function(file,i){
  parseFiles[i] = new Parse.File(file.name,{
    base64: file.dataUrl
  });
  promises.push(parseFiles[i].save());
});

// actually save the files in one batch process of promises
Parse.Promise.when(promises).then(function(){
  // success callback says all files are saved, now lets add them to the parent
  angular.forEach(parseFiles, function(parseFile,i){
    delete parseFile._previousSave; //--> fix circular json error
    parseObject.addUnique('images',parseFile); // could alternatively use .add()
  });
  // now save the parent with the references to the files
  return parseListing.save();
}).then(function(){
  successCallback();
},function(error) {
  errorCallback();
});