Firestore моделирования данных и angularFire - PullRequest
0 голосов
/ 28 января 2020

У меня есть такая модель данных

Players-->root collection

Sports--->root collection

Players_Sports---root collection

Player Collection

Sports collection

enter image description here

Я хочу получить все спортивные данные (несколько видов спорта) или принадлежащий игроку документ. Для этого я использую angularFireStore5

Первый , я получаю данные об игроке, как это

this.db.collection('players').doc(id).get().toPromise()

Второй , я получаю Player (пользователь ) связанный PlayerSport

db.collection<any>('PlayerSports',ref => ref.where('playerId', '==', id) ).get().toPromise()

третий , я пытаюсь получить информацию о спорте на основе идентификаторов,

db.collection<any>('sportsType', ref => ref.where('sportsType' 'in' [sportsIDs])).get().toPromise()

, где SportID - это набор идентификаторов, которые связаны в player_sports

Первый и второй шаги работают нормально, но третьи шаги не дают никаких данных или ответов

Не могли бы вы сообщить мне, в чем проблема, в модели данных или коде? я предполагаю, что модель данных не верна. Пожалуйста, объясните мне это.

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Я бы предложил получить данные из firebase и сохранить их в списке, чтобы приложение могло получить к ним доступ позже.

void getDataF(){
databaseReference
.collection("TableName")
.getDocuments()
.then((QuerySnapshot snapshot) {
snapshot.documents.forEach((f) { 
iDFacList.add(f.documentID);
dbFacList.add(f.data["FieldName"]);
});
});
}
0 голосов
/ 28 января 2020

Насколько я вижу, в документе sportsType нет поля sportsType.

Если вы пытаетесь найти документы на основе их поля SportsId, вам нужно ref.where('SportsId'....


Обновить

Похоже, вы пытаетесь найти документ по его идентификатору, который вы можете сделать с помощью:

ref.doc(sportsIDs)

Если вы хотите получить несколько документов или получить один документ как коллекцию, вы можно использовать:

ref.where(firebase.firestore.FieldPath.documentId() 'in' [sportsIDs])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...