2014-04-22 38 views
5

Google Cloud MBS的文档指出,可以通过在字符串“[public]”或“[private]”前加上实体的KindName前缀来控制对存储实体的访问, “ (或无)。使用Google Cloud/Android Mobile后端入门名称访问范围

https://cloud.google.com/developers/articles/mobile-backend-starter-api-reference#acfce

然而试图CloudEntities插入数据存储区使用与[公共]或[私人]启动导致异常/错误KindNames,具体而言,是KindName是无效的。

这是既为后端在打开和在安全模式下运行(使用谷歌登录凭证来导出_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:Illegal kind name:[public] TestDB

04-22 19:57:54.132:E/AndroidRuntime(4690):at 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):在com.example.package.CloudUtil.checkSync(CloudUtil.java:199)

的代码的相关部分editted /压缩为简洁是:

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); 
       } 
      }); 

如果处理程序是回调_cloudfrag是从示例代码CloudBackendFragment。

对于一次或多次实体列表,我同样使用插入和更新的效果。

我只能认为我误解了文档 - 但似乎相当明确,KindNames可以从[public] [private]等开始?

回答

1

从其他人遇到同样问题的github上的bug报告来看,这是Google MBS库中的一个错误。

不幸的是,直到今晚,对这个问题的回应一直保持沉默,直到今晚,开发者发布了一个更新自述文件的提交,表明该库不再被支持,并且不是官方的谷歌产品(尽管它被作为初学者工具包每个云计算项目都从控制台启动!)。

https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-android-client/pull/16

查看源我觉得这个访问修饰符功能是从来没有真正尽管文档相反实施。