#java #if-statement #google-cloud-datastore
#java #if-оператор #google-облако-хранилище данных
Вопрос:
Я использую java для запроса облачного хранилища данных Google, чтобы выяснить, была ли запись там более одного дня, и если да, то удалите запись. У меня есть что-то вроде этого:
if (requestUploaded == true) {
datastore.delete(row_to_delete);
Я хочу добавить логику, в которой:
а) Я получаю текущее время.
б) Затем проверьте, является ли запись хранилища данных старше одного дня, если да, то удалите.
Спасибо!
Ответ №1:
Основываясь на вашем объяснении проблемы, я не знаю ни одного встроенного метода для определения времени создания в объектах облачного хранилища данных, поэтому мое объяснение предполагает, что у вас есть created
свойство в вашей сущности.
Получение текущего времени
Вы можете создать новый Date
объект без каких-либо аргументов, чтобы получить текущую дату и время:
import java.util.Date;
Date d = new Date();
При желании вы можете использовать Timestamp.now()
при создании своей сущности, согласно документации:
Entity task = Entity.newBuilder(taskKey)
.set("category", "Personal")
.set("created", Timestamp.now())
.set("description",
StringValue.newBuilder("Learn Cloud Datastore").setExcludeFromIndexes(true).build())
.build();
Сравнение времени создания объекта с текущей датой и временем
Вы можете использовать следующий пример кода для извлечения всех объектов, created
свойство которых, которое является датой и временем создания объекта, меньше текущего времени, которое определяется Timestamp.now()
Query<Entity> query = Query.newEntityQueryBuilder()
.setKind("Person")
.setFilter(PropertyFilter.lt("created", Timestamp.now()))
.build();
QueryResults<Entity> results = datastore.run(query);
while (results.hasNext()) {
Entity currentEntity = results.next();
System.out.println(currentEntity.getString("name"));
}
Вы можете обратиться к документации оператора PropertyFilter для получения более подробной информации о фильтрации.
Удаление сущности
Наконец, вы можете удалить объект по заданному ключу:
datastore.delete(taskKey);