`Get ()` в Firestore считается за 1 прочитанный документ? - PullRequest
0 голосов
/ 09 января 2020

Я создаю пользовательский чат в своем приложении, поэтому немного беспокоюсь о ценах 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()))
  })
})

1 Ответ

1 голос
/ 09 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...