4

我正在使用谷歌移动后端启动器。我正在尝试使用 .setId 在 CloudEntity 对象中编写自定义 ID,但是当我尝试使用 CloudBackend.insert 方法将其写入数据存储时。它只写入属性,但不包括我的自定义 ID。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    mTrackButton = (Button) findViewById(R.id.trackButton);
    mTrackButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        sendData();

        }
    });
}
private void sendData(){

    CloudEntity ce = new CloudEntity("Try");
    ce.setId("Custom_ID");
    ce.put("Key1", "Value1");

    CloudCallbackHandler<CloudEntity> cch = new CloudCallbackHandler<CloudEntity>() {

        @Override
        public void onComplete(CloudEntity results) {
            Toast.makeText(TestActivity.this, "Sent to cloud", Toast.LENGTH_SHORT).show();

        }
        @Override
        public void onError(IOException e) {
            Toast.makeText(TestActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
        }
    };

    getCloudBackend().insert(ce,cch);
}

数据存储

难道我做错了什么?

4

1 回答 1

0

虽然我没有使用过移动后端启动器,但我已经广泛使用了 Datastore。

当您存储实体时,数据存储区会自动为您的实体分配唯一的密钥。

我推荐以下有关密钥的文档:https ://cloud.google.com/appengine/docs/python/ndb/entities#entity_keys

在那里您会看到建议是使用自动的唯一键并将您自己的值设置为单独的属性。

如果您决定在实际 Key 上设置自己的 ID,官方建议使用字符串,因为数字可能会与自动生成的 ID 冲突。另一种方法是保留一系列数字 ID 以供使用。

但这一切都需要在您的后端添加更多自定义代码,并使交互更加复杂。

于 2015-06-18T01:58:25.913 回答