我正在将图像上传到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);
});
}
这甚至可以实现吗?
我的问题的关键在于我希望班级中的一个条目与许多文件相关联。
答案 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();
});