我最近完成了将我的 Parse PHP 应用程序迁移到谷歌云托管的 Parse Server。从那时起,ParseObject::saveAll()
、ParseObject::destroyAll()
等批处理操作开始在大多数情况下失败。我正在考虑将此作为 GitHub 上的错误报告,但我想确保这不仅仅是我的实例。
我什至无法重现 GitHub PHP SDK test code for destroyAll :
...
$o1 = ParseObject::create('TestObject');
$o2 = ParseObject::create('TestObject');
$o3 = ParseObject::create('TestObject');
ParseObject::saveAll([$o1, $o2, $o3]);
ParseObject::destroyAll([$o1, $o2, $o3]);
...
此代码和我的应用程序对批处理操作的使用都会在 PHP 上抛出以下类型的异常(在此示例中,错误由 saveAll 抛出):
Uncaught exception 'Parse\ParseException' with message 'cannot route batch path /1/classes/TestObject'
调试显示 Parse Server 返回错误代码 107,根据 the documentation表示无效的 JSON。我不熟悉 REST API,但是对于这个例子,发送的数据是
{"requests":[{"method":"POST","path":"/1/classes/TestObject","body":[]},{"method":"POST","path":"/1/classes/TestObject","body":[]},{"method":"POST","path":"/1/classes/TestObject","body":[]}]}
这是有效的 JSON。
批量操作在迁移之前正常工作。 PHP版本是5.6。任何帮助表示赞赏。如果可以重现错误,我将在 GitHub 上创建问题。
最佳答案
解决方案是编写 /parse/classes/ClassName
而不是 /1/classes/ClassName
。所以在迁移之后,详细信息在 https://parse.com/docs/rest/guide 的文档中说明。 , 已经过时了。
!!!这可能会在未来改变!!!关注这个问题:https://github.com/ParsePlatform/parse-php-sdk/issues/229
关于php - 迁移后无法执行批量操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761199/