Я создаю пользовательский чат в своем приложении, поэтому немного беспокоюсь о ценах Firestore. Я ищу лучший способ структурировать свою базу данных, так как я не уверен, смогу ли я изменить ее в будущем. get()
считается за одно чтение или за каждое сообщение будет взиматься плата за другое чтение?
Это то, что я сделал, я надеюсь, что это лучший способ сделать это:
// Set the user's IDs
var userA = 1
var userB = 2
// Naming the conversation
var conversation = (userA < userB ? userA + '_' + userB : userB + '_' + userA)
// Initialize Firebase
firebase.initializeApp()
// Initialize Firestore
var db = firebase.firestore()
// INSERT conversation name to the conversations list of each user
db.collection('users/' + userA + '/conversations').doc(conversation).set({})
db.collection('users/' + userB + '/conversations').doc(conversation).set({})
// SELECT conversations list for userA
db.collection('users/' + userA + '/conversations').get().then((response) => {
response.forEach((document) => {
console.log(document.id)
})
})
// SELECT conversations list for userB
db.collection('users/' + userB + '/conversations').get().then((response) => {
response.forEach((document) => {
console.log(document.id)
})
})
// INSERT message "Hello" from userA
db.collection('conversations/' + conversation + '/messages').add({
time: firebase.firestore.Timestamp.fromDate(new Date()).seconds,
user: userA,
text: 'Hello'
})
// INSERT message "World" from userB
db.collection('conversations/' + conversation + '/messages').add({
time: firebase.firestore.Timestamp.fromDate(new Date()).seconds,
user: userB,
text: 'World'
})
// SELECT messages from conversation
db.collection('conversations/' + conversation + '/messages').get().then((response) => {
response.forEach((document) => {
console.log(document.id + ': ' + JSON.stringify(document.data()))
})
})