как использовать где в облачном firestore - PullRequest
0 голосов
/ 02 июля 2018

Я использую облачный firestore в функциях firebase. я сталкиваюсь с проблемой использования "где" в запросе, так как я не знаю точный синтаксис. пожалуйста, поправьте меня, если я ошибаюсь.

self.dbManager.collection('test').where('entry_date', '==','2018-06-29').where('entry_status','==','active').get().then( async doc => {
                console.log("doc--------->",doc);
                console.log("doc--------->",doc.data());
                conv.data.userQuesData  =   doc.data()
});

Я получаю ошибку ниже, когда я использую "doc.data ()". У нас есть данные для вышеуказанных условий

TypeError: doc.data is not a function
    at MYservice.<anonymous> (/user_code/services/myService.js:99:62)
    at step (/user_code/services/myService.js:32:23)
    at Object.next (/user_code/services/myService.js:13:53)
    at /user_code/services/myService.js:7:71
    at __awaiter (/user_code/services/myService.js:3:12)
    at /user_code/services/daoService.js:94:168
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

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

self.dbManager.collection('test').where('entry_date', '==','2018-06-29').where('entry_status','==','active').get().then( async querySnapshot => {
    querySnapshot.forEach(doc => {
        console.log("doc--------->",doc.data());
    });
});

Обратите внимание, что это довольно хорошо описано в документации о получении нескольких документов , которую я рекомендую, поскольку функциональность запросов основана на этом.

0 голосов
/ 02 июля 2018

При выполнении запроса get () возвращает обещание, содержащее объект QuerySnapshot .

В вашем коде вы присваиваете этот QuerySnapshot переменной с именем doc, тогда, очевидно, предполагая, что это объект типа DocumentSnapshot, что является ошибкой.

Вам необходимо настроить свой код так, чтобы он работал с QuerySnapshot, а не с DocumentSnapshot. Пожалуйста, обратитесь к QuerySnapshot документам, чтобы понять, что возвращается из запроса к коллекции. В частности, обратите внимание, что список совпадений документов, полученных из запроса, можно увидеть в свойстве docs как QueryDocumentSnapshot объекты.

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