класс.

я естьChallenge объект, который имеет свои собственные свойства, и я могу успешно добавить его в базу данных следующим образом:

DocumentReference challengeRef=usersRef.document(loggedUserEmail).collection("challenges_feed").
                document(callengeID);
challengeRef.set(currentChallenge);

Вот как это выглядит в базе данных:

Я хотел бы создать новое поле в базе данных (под этой задачей), которое называетсяlatestUpdateTimetamp, Вот как этодолжен выглядеть (я добавил это вручную):

Я пытался установить его вconstructor изobject нравится:

private Map<String,String> latestUpdateTimestamp;

public Challenge(String id, String senderName,  String senderEmail) {   
            this.senderName=senderName;
            this.senderEmail = senderEmail;

            this.latestUpdateTimestamp= ServerValue.TIMESTAMP;
        }

Но это то, что я получаю вdatabase:

Я пытаюсь добавитьlatestUpdateTimestamp кChallenge иChallenge Сам объект к базе данных по тому же вызову. Является ли это возможным?

Могу ли я как-то добавить этоtimestamp как свойство этогоobject перед добавлением?

Я знаю, что могу сделать новый вызов и добавить это поле, но мне интересно, возможно ли это сразу.

 Doug Stevenson17 нояб. 2017 г., 19:16
 Doug Stevenson17 нояб. 2017 г., 19:16
ServerValue.TIMESTAMP является значением базы данных в реальном времени. Firestore делает это по-другому.

Ответы на вопрос(1)

Решение Вопроса

Да, вы можете, используяMap, Прежде всего, согласноофициальные документы необходимо будет использовать аннотацию, которая выглядит следующим образом:

@ServerTimestamp Date time;

Аннотация, используемая для пометки поля даты, которое должно быть заполнено отметкой времени сервера. Если записываемый POJO содержит ноль для поля, аннотированного @ ServerTimestamp, он будет заменен сгенерированной сервером отметкой времени.

Вот как вы можете обновитьlatestUpdateTimestamp поле с отметкой времени сервера иchallangeId с желаемым значением в то же время.

DocumentReference senderRef = challengeRef
    .document(loggedUserEmail)
    .collection("challenges_feed")
    .document(callengeID);

Map<String, Object> updates = new HashMap<>();
updates.put("latestUpdateTimestamp", FieldValue.serverTimestamp());
updates.put("challangeId", "newChallangeId");
senderRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() {/* ... */}
 Clyky02 сент. 2018 г., 10:18
@AlexMamo - это поле, помеченное@ServerTimestamp хранится в Firestore как метка времени Unix (например, «1535876245») или как полная дата (например, «2018-09-02T08: 17: 25 + 00: 00»)?
 Tal Barda18 нояб. 2017 г., 12:58
Да, это работает! Спасибо!
 Alex Mamo02 сент. 2018 г., 11:32
@Clyky Ни один из них, хранится с использованиемDate класс.
 Alex Mamo18 нояб. 2017 г., 08:09
Работает ли с использованием этого кода?
 Alex Mamo18 нояб. 2017 г., 12:58
Не за что, Тал Барда!

Ваш ответ на вопрос