4

Google Mobile Backend Starter を使用しています。.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

自動の一意のキーを使用し、独自の値を別のプロパティとして設定することをお勧めします。

実際のキーに独自の ID を設定することに決めた場合、数字が自動生成された ID と衝突する可能性があるため、文字列を使用することを公式に推奨します。別の方法は、使用する数値 ID の範囲を予約することです。

しかし、これにはすべて、バックエンドでより多くのカスタム コードが必要になり、対話がより複雑になります。

于 2015-06-18T01:58:25.913 に答える