Я использую мобильный бэкэнд-стартер Google для проекта и хочу сам установить имя ключа для некоторых сущностей вместо использования автоматически сгенерированного.
Если бы я делал это без бэкенда, я мог бы сделать что-то вроде того, что описано в документации хранилища данных, которое создает сущность сотрудника с ключевым именем «asalieri»:
Entity employee = new Entity("Employee", "asalieri");
Вот код, который я использую для создания объекта. Я пытался использовать функцию CloudEntity.setId(). Upc - это строка, и она не работает, когда я использую жестко заданную строку.
CloudEntity avg = new CloudEntity("Aggregate");
avg.setId(upc);
avg.put("averagePrice", sum/count);
insertAverage(avg);
private void insertAverage(CloudEntity avg) {
CloudCallbackHandler<CloudEntity> handler = new CloudCallbackHandler<CloudEntity>() {
@Override
public void onComplete(final CloudEntity result) {
Toast.makeText(AddProduct.this, "Average updated.", Toast.LENGTH_LONG).show();
}
@Override
public void onError(final IOException exception) {
handleEndpointException(exception);
}
};
// execute the insertion with the handler
getCloudBackend().insert(avg, handler);
}
Когда я запускаю приложение, все работает нормально, за исключением того, что новый объект не имеет пользовательского идентификатора, который я установил.
Единственное, о чем я могу думать, это то, что setId() не должен делать то, что я думаю, но я копался в коде и не смог найти другого способа сделать то, что я хочу.
Кто-нибудь знает, почему это не работает?