Какое самое чистое решение для запроса данных из двух связанных коллекций? - PullRequest
0 голосов
/ 26 октября 2018

Мои текущие структуры выглядят следующим образом

Сборник сообщений

- PostID
       - titel
       - content
       - titelimgurl
       - tags
       - timestamp

Теперь получить данные здесь легко, чего я хочу добиться, так это отделить контент от остальных, чтобы я не могМне нужно получить ненужные данные на моей странице.

Так что я планирую перейти к этой структуре:

Сборник сообщений

- PostID
       - titel
       - titelimgurl
       - tags
       - timestamp

Сборник содержимого

- PostID
       - content

Проблема в том, что я не уверен, как эффективно получить данные там, например:

var postRef = db.collection("posts").doc(this.docID);

postRef.get().then(function(doc) {
    if (doc.exists) {
        var contentRef = db.collection("content").doc(doc.id)
        contentRef.get().then(function(doc) {
            ....
         }
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

Это выглядит чрезмерно сложно, особенно при назначении этих данных фактической коллекции сообщений в моем Магазине, любые идеи приветствуютсяо том, как я могу сделать это более эффективным.

1 Ответ

0 голосов
/ 26 октября 2018

Если вы хотите сделать запрос к базе данных только один раз, вам не следует денормализовать вашу базу данных, создав эту content как коллекцию верхнего уровня. Вы можете сохранить содержимое публикации как свойство в документе PostID. В отличие от базы данных реального времени Firebase, где для отображения списка post объектов вы бы скачали весь узел posts, в Cloud Firestore это больше не проблема. Таким образом, вы можете свободно сохранять содержимое как свойство для выполнения одного запроса.

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