Есть два способа решить эту проблему. Можно было бы использовать currentUserId
в качестве ключа документа, а затем использовать set()
вместо add()
:
val fStore: FirebaseFirestore = FirebaseFirestore.getInstance()
val currentUserId = FirebaseAuth.getInstance().currentUser!!.uid
val post = Post(title, description , publisherId = currentUserId)
fStore.collection("Posts")
.document(currentUserId)
.set(post)
.addOnSuccessListener{
Toast("Your post has been uploaded successfully.")
}
Это более распространенное решение, поскольку вы используете в качестве ключа документ - идентификатор пользователя, полученный в процессе аутентификации, а не случайный ключ. Второй вариант, который у вас есть, - использовать идентификатор, сгенерированный Firestore:
val fStore: FirebaseFirestore = FirebaseFirestore.getInstance()
val key = fStore.collection("Posts").document().id;
val post = Post(title, description , publisherId = key)
fStore.collection("Posts")
.document(key)
.set(post)
.addOnSuccessListener{
Toast("Your post has been uploaded successfully.")
}
В обоих случаях, чтобы иметь одинаковое значение для идентификатора документа и для publisherId
, вы должны использовать set () и не add (), потому что add () всегда генерирует случайный идентификатор при каждом вызове.
Edit:
set()
делает то же самое, что и add()
, с той лишь разницей, что вам нужно знать идентификатор, прежде чем использовать его. Итак, в вашем случае вам следует использовать второе решение.
Если вы хотите добавить только идентификатор сообщения в качестве свойства в свой документ, вам следует изменить свой класс Post
, добавив другое поле с именем postId
. Теперь, когда вы хотите создать новый объект Post
и добавить его в свою базу данных, используйте следующие строки кода:
val fStore: FirebaseFirestore = FirebaseFirestore.getInstance()
val key = fStore.collection("Posts").document().id;
val post = Post(title, description , publisherId = key, postId) //postId added
fStore.collection("Posts")
.document(key)
.set(post)
.addOnSuccessListener{
Toast("Your post has been uploaded successfully.")
}
Видите, я передал конструктору значение идентификатора документа. , который на самом деле является идентификатором сообщения. Теперь каждый раз, когда вы добавляете новую публикацию, у вас всегда будет идентификатор публикации как свойство вашего документа.