繁体   English   中英

使用opensource parse-server在Parse中删除PFFile时遇到问题

[英]Having trouble deleting PFFile in Parse using opensource parse-server

我有一个引用图像的集合,当用户使用新图像更新该集合时,我想删除旧图像。 我保留对旧图像的URL的引用,以传递到用云代码编写的函数中。

我在我的计算机上运行所有本地操作,但是当我在Heroku上运行服务器运行时,我遇到了同样的问题。 这是从iOS SDK调用的。

这是有问题的功能:

Parse.Cloud.define('removeOldFilesFromDB', function (request, response) {

    var fileUrls = request.params.fileUrls;
    var promises = [];

    for (var a = 0; a < fileUrls.length; a++) {

        promises.push(Parse.Cloud.httpRequest({
            method: 'DELETE',
            url: fileUrls[a],
            headers: {
                'X-Parse-Application-Id': process.env.APP_ID || 'myAppId',
                'X-Parse-Master-Key': process.env.MASTER_KEY || 'myMasterKey'
            }
        }));

    }

    Parse.Promise.when(promises).then( function (result) {
        console.log("Successfully deleted files");
        response.success(result);
    }, function(a,b,c,d,e) {
        console.log("Nope jacked it up!");
        response.error("Error deleting files");
    });

})

当我调用有问题的代码时,我根本看不到解析服务器日志中的DELETE请求。

我在配置中设置了verbose: true标志,这是我从客户端进行此调用时获得的日志的详细输出:

verbose: POST /parse/functions/removeOldFilesFromDB { host: 'e0ae0682.ngrok.io',
'x-parse-client-version': 'i1.12.0',
accept: '*/*',
'x-parse-session-token': 'r:5290c76c47678213770765d990ee38b6',
'x-parse-application-id': 'myAppId',
'x-parse-client-key': 'myClientKey',
'x-parse-installation-id': '3fafc219-1c63-4d68-b42f-5caa3e1c27cb',
'accept-language': 'en-us',
'accept-encoding': 'gzip, deflate',
'x-parse-os-version': '8.1 (12B411)',
'content-type': 'application/json; charset=utf-8',
'content-length': '204',
'user-agent': 'Spin%20the%20Bottle/1 CFNetwork/711.1.12 Darwin/14.0.0',
'x-parse-app-build-version': '1',
'x-parse-app-display-version': '1.0',
'x-forwarded-for': '71.163.238.223' } {
"fileUrls": [
    "http://e0ae0682.ngrok.io/parse/files/myAppId/7b5b50e2871af27971be0425f367ab96_file.bin",
    "http://e0ae0682.ngrok.io/parse/files/myAppId/cff909602b60b15331b1ac60a4f08697_file.bin"
  ]
}

Nope jacked it up!
verbose: error: code=141, message=Error deleting files

所以DELETE调用甚至没有显示在那里是奇怪的。 我用Parse.Cloud.httpRequest方法或其他什么方法称错了吗?

如果我在浏览器中点击fileUrl的值,它会下载我想要删除的图像,所以路径是正确的。

这是在最新发布的parse-server 2.2.10版本上。

这些是我跟随的指示,认为这是正确的方法:

https://parse.com/docs/rest/guide/#files-deleting-files

这是通过云代码进行休息调用:

https://parse.com/questions/making-a-rest-call-from-within-cloud-code

根据它,它说我可以使用Parse.Cloud.httpRequest进行REST调用,所以我不确定你指的是不正确的方法。 这两个都有文档的链接,这就是我所遵循的。

所以我显然做错了但我不确定,有谁能帮帮忙?

只需从文件URL中删除myAppId即可。

(例如)

http://e0ae0682.ngrok.io/parse/files / myAppId /7b5b50e2871af27971be0425f367ab96_file.bin

http://e0ae0682.ngrok.io/parse/files/7b5b50e2871af27971be0425f367ab96_file.bin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM