jco*_*sse 5 google-app-engine android google-cloud-datastore
Google Cloud MBS的文档声明可以通过在字符串"[public]"或"[private]"(或无)之前为该实体的KindName添加前缀来控制对存储实体的访问.
https://cloud.google.com/developers/articles/mobile-backend-starter-api-reference#acfce
但是,尝试使用以[public]或[private]开头的KindNames将CloudEntities插入数据存储区会导致异常/错误,特别是KindName无效.
这是在开放和安全模式下运行的后端(使用Google登录凭据派生_owner字段)的情况
例如,我使用KindName"[public] TestDB"失败,而"TestDB"不会抛出任何异常.
04-22 19:57:54.132:E/AndroidRuntime(4690):进程:com.example.package,PID:4690
04-22 19:57:54.132:E/AndroidRuntime(4690):java.lang.IllegalArgumentException:非法的类名:[public] TestDB
04-22 19:57:54.132:E/AndroidRuntime(4690):在com.google.cloud.backend.core.CloudEntity.(CloudEntity.java:86)
04-22 19:57:54.132:E/AndroidRuntime(4690):at com.example.package.CloudUtil.convertUpdatesToCEList(CloudUtil.java:252)
04-22 19:57:54.132:E/AndroidRuntime(4690):at com.example.package.CloudUtil.checkSync(CloudUtil.java:199)
为简洁起见,编辑/压缩的相关代码部分是:
CloudBackendMessaging cbm=_cloudfrag.getCloudBackend();
List<CloudEntity> entries=new ArrayList<CloudEntity>();
while (...) {
CloudEntity ce=new CloudEntity(_CLOUD_DB_KIND);
ce.put("fieldname", devID);
entries.add(ce);
}
_countActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
cbm.updateAll(entries, handler);
}
});
Run Code Online (Sandbox Code Playgroud)
其中handler是回调,而_cloudfrag是示例代码中的CloudBackendFragment.
对于单个或多个ie实体列表,我同时使用插入和更新获得相同的效果.
我只能认为我误解了文档 - 但似乎相当明确的KindNames可以从[公共] [私人]等开始?
从遇到同样问题的其他人在 github 上的错误报告来看,这是 Google 的 MBS 库中的错误。
不幸的是,对此的回应已经沉默了几个月,直到今晚,开发人员发布了一个更新自述文件的提交,以表明该库不再受支持并且不是谷歌的官方产品(尽管它被作为每个云项目的入门套件推送)从控制台开始!)。
https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-android-client/pull/16
查看源代码,我认为此访问修饰符功能从未实际实现,尽管文档相反。
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |