Как создать документ с вложенной коллекцией - PullRequest
1 голос
/ 30 мая 2020

Я не могу найти, как создать новый документ без каких-либо полей, кроме одной подколлекции - сообщений (и в этой коллекции сообщений было бы несколько полей). Это то, чем я хочу заниматься. Но я не хочу создавать подколлекцию в уже существующем документе. Я хочу создать в нем новый документ и вложенную коллекцию.

enter image description here

Честно говоря остановился на этом:

let chatRef = db.collection("chat_event").add({

})

1 Ответ

2 голосов
/ 30 мая 2020

Этот ответ очень поможет.

let chatRef = db
 .collection("chat_event").document("chat1")
 .collection("messages").document("message1");

Если вы не хотите жестко кодировать идентификатор родительского документа или если вы хотите сгенерировать firestore, я бы. Затем сначала получите идентификатор из функции createId() firestore.

let chatEventId = db.createId();
let chatRef = db
 .collection("chat_event").document(chatEventId)
 .collection("messages").document("message1");

Вы все равно можете использовать автоматически сгенерированный идентификатор для документа подколлекции:

let chatEventId = db.createId();
let messageId = db.createId();
let chatRef = db
 .collection("chat_event").document(chatEventId)
 .collection("messages").document(messageId);

Обратите внимание, что автоматически сгенерированные идентификаторы firestore полностью случайным образом, и, следовательно, документы не хранятся в хронологическом порядке. Если вам все равно понадобится какой-то порядок, вы можете добавить метки времени к этим документам либо при вставке данных, либо при обновлении документа с помощью информации о метке времени.

docRef.update({
  timestamp: firebase.firestore.FieldValue.serverTimestamp()
});

С этим вы можете упорядочивать в хронологическом порядке как в консоли, так и в ваших собственных запросах.

Ознакомьтесь с этим ответом для получения дополнительной информации об авто- создание идентификаторов

...