0

Я занимаюсь разработкой приложения, которые используют Google облачных сервисов, я установлен локальный сервер разработки, сегодня я разработал создать из падла, вниз по коду:как создать CRUD на облачном хранилище Google

Entity.Builder entRestaurante = Entity.newBuilder(); 
    entRestaurante.setKey(makeKey()); 
    entRestaurante.addProperty(makeProperty(ID, makeValue(restaurante.getId()))); 
    entRestaurante.addProperty(makeProperty(CAMPUS, makeValue(restaurante.getId()))); 
    entRestaurante.addProperty(makeProperty(NOME, makeValue(restaurante.getId()))); 
    entRestaurante.addProperty(makeProperty(INICIO_HORARIO, makeValue(restaurante.getInicioHorario()))); 
    entRestaurante.addProperty(makeProperty(FIM_HORARIO, makeValue(restaurante.getFimHorario()))); 

    Mutation.Builder mutation = Mutation.newBuilder(); 
    mutation.add(entRestaurante); 

    CommitRequest.newBuilder() 
      .setMutation(mutation) 
      .setMode(CommitRequest.Mode.NON_TRANSACTIONAL) 
      .build(); 

Этот работает отлично я думаю, поиск объекта уплотнительное Мутация я видел, что он имеет методы, чтобы сделать остальную часть падла, что мне нужно addDelete, addUpdate:

1- Как я могу использовать эти ребята? Может ли кто-нибудь показать мне?

Я tryied это сделать чтение из падла:.

public List<Restaurante> obtem(final Restaurante filtro) { 
    List<Restaurante> listaRetorno = new ArrayList<>(); 
    List<Filter> filtros = new ArrayList<>(); 

    try { 
     filtros.add(makeFilter(
       ID, PropertyFilter.Operator.EQUAL, makeValue(filtro.getId())).build()); 

     filtros.add(makeFilter(
       CAMPUS, PropertyFilter.Operator.EQUAL, makeValue(filtro.getCampus())).build()); 

     filtros.add(makeFilter(
       NOME, PropertyFilter.Operator.EQUAL, makeValue(filtro.getNome())).build()); 

     filtros.add(makeFilter(
       FIM_HORARIO, PropertyFilter.Operator.EQUAL, makeValue(filtro.getFimHorario())).build()); 

     filtros.add(makeFilter(
       INICIO_HORARIO, PropertyFilter.Operator.EQUAL, makeValue(filtro.getInicioHorario())).build()); 

     Filter enconteIgual = makeFilter(filtros).build(); 

     Query.Builder query = Query.newBuilder(); 
     query.addKindBuilder().setName(DATA_SET_NAME); 
     query.setFilter(enconteIgual) 
       .setLimit(1) 
       .build(); 

     RunQueryRequest request = RunQueryRequest.newBuilder().setQuery(query).build(); 
     RunQueryResponse response = datastore.runQuery(request); 

     for (EntityResult result : response.getBatch().getEntityResultList()) { //Here problem when try to read the values 
      Map<String, Value> props = getPropertyMap(result.getEntity()); 
      String id = getString(props.get(ID)); 
      String campus = getString(props.get(CAMPUS)); 
      String nome = getString(props.get(NOME)); 
      Date inicioHorario = obtenhaData(getString(props.get(INICIO_HORARIO))); 
      Date fimHorario = obtenhaData(getString(props.get(FIM_HORARIO))); 

      listaRetorno.add(new Restaurante(
        id, 
        campus, 
        nome, 
        inicioHorario, 
        fimHorario)); 
     } 

     if (response.getBatch().getMoreResults() == QueryResultBatch.MoreResultsType.NOT_FINISHED) { 
      ByteString endCursor = response.getBatch().getEndCursor(); 
      query.setStartCursor(endCursor); 
     } 

     return listaRetorno; 

    } catch (DatastoreException ex) { 
     Logger.getLogger(RestauranteRepositoryImpl.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    return null; 
} 

Но ответ на response.getBatch() getEntityResultList() является MORE_RESULTS_AFTER_LIMIT исключение

2- ли кто-нибудь знает, что это за ответ? Где элементы, удовлетворяющие «select»?

Благодаря

ответ

0
  1. Вы можете использовать addUpdate(), addUpsert(), addDelete(), addInsert() или addInsertAutoId() методы на Mutation.Builder добавить мутации. Вы можете найти примеры использования этих методов в Cloud Datastore documentation on working with entities.

  2. Ваш код делает правильные вещи здесь. Результаты запроса можно найти по телефону getEntity() по пунктам RunQueryResponse.getBatch().getEntityResultList(). Что касается MORE_RESULTS_AFTER_LIMIT, в настоящее время это может быть возвращено, даже если дополнительных результатов нет (issue tracker). В качестве обходного пути вы можете продолжить свой запрос, пока не получите пакет с нулевыми результатами.

+0

Я не могу протестировать его сейчас, но я думаю, что это решит мою проблему, спасибо много (если на самом деле он решит, что я буду продвигать ваш sugestion) – user9787

Смежные вопросы