Вот чего я пытаюсь достичь, я хочу уникальное поле идентификатора для каждого документа в моей базе данных, и я хочу, чтобы этот уникальный идентификатор совпадал с идентификатором документа.
Пример:
documents: data:
eBgdTRE123 id:'eBgdTRE123'
name:'Jhon Doe'
job:'Programmer'
я хочу, чтобы в базе данных была эта структура, теперь у меня есть две идеи для достижения этой цели
1: использовать облачную функцию и иметь onCreate
слушателя, и каждый раз появляется новый документ, захватывающий документ и устанавливающий идентификатор и обновите его, вот как я это делаю
exports.addDocIdToField =
functions.firestore.document('collectionname/{docID}').onCreate((snap,context) => {
const id = context.params.docID;
return admin.firestore().collection('collectionname')
.doc(id).set({ id: snap.id }, { merge: true })
.then(() => {
return null;
})
.catch((error) => {
return null;
});
})
2: использовать вышеуказанный метод при создании документа. добавьте новый документ, как только этот документ будет добавлен, получите новый добавленный документ и обновите его id
, оба они работают, но мой вопрос - могу ли я положиться на этот вид операции? Я имею в виду, если id
каким-либо образом undefined
, это может вызвать дальнейшую ошибку в приложении.
или если есть другие способы добиться этого?