#swift #typescript #google-cloud-firestore #google-cloud-functions
#swift #typescript #google-cloud-firestore #google-cloud-функции
Вопрос:
Я могу отправить создать документ в Firestore, но я хотел бы знать, есть ли способ добавить n количество идентификаторов пользователя / user documentIDs в массив к этому документу из swift или из облачных функций в typescript.
Я понимаю, что могу запросить и получить всех пользователей из коллекции users в массив, а затем получить n случайных пользователей и добавить в документ, который будет создан в Firestore, но если у меня миллион пользователей, то это будет миллион чтений, и я пытаюсь этого избежать.
Код
if let data = self.imageView.image?.pngData() {
let postID = APIs.posts.collection.document()
Services.storage.upload(path: "posts/(postID).png", data: data, onSuccess: { (url) in
Services.crud.create(
ref: APIs.posts.collection.document(),
dict: [
"createdAt": Date(),
"fromUser": APIs.users.currentUserRef,
"post": url,
"timer": 5,
//"toUsers": [userID1, userID2, userID3, etc...] <- How I want to end up in Firestore
"type": "Image"
] as [String: Any],
onSuccess: {
self.openCamera()
}) { (error) in
print(error)
}
}) { (error) in
print(error)
}
}
Ответ №1:
Если вы хотите узнать все идентификаторы документов в коллекции, вам все равно придется запросить всю коллекцию, чтобы получить все идентификаторы. В Firestore нет бесплатной операции «получить все идентификаторы». Нет операции для поиска рандомизированной выборки документов.
Комментарии:
1. Хорошо, это то, что я предположил. Просто подумал, что я спрошу. Спасибо! Мне просто нужно найти обходной путь, ага.
2. Вам нужно будет самостоятельно написать решение. Попробуйте поискать «База данных реального времени» вместо Firestore, чтобы получить похожие решения, поскольку они обе являются базами данных NoSQL с аналогичными ограничениями.