Запрос Firestore возвращает пустой снимок - PullRequest
2 голосов
/ 31 октября 2019

У меня есть прослушиватель websocket узла для запроса некоторых данных из моей базы данных. Однако в настоящее время запрос возвращает пустой снимок, хотя я знаю, что запрос должен что-то возвращать.

Я делаю простой форум на основе узлов (хотя я довольно новичок в Node, так что это не так уж и хорошо)и я пытаюсь запросить данные поста с сервера, чтобы отправить обратно клиенту. Я попытался проверить правильность ссылок на мои записи и дважды проверил, существуют ли значения, которые я запрашиваю, в коллекции. Я также уже проверил, что данные были отправлены через сокет правильно, поэтому я в растерянности.


let query = db.collection('posts').where('id','==',postID);
query.get().then(snapshot => {
      if (snapshot.empty) {
        client.emit('resPost', 'Failed');
        return;
      }
      snapshot.forEach(doc => {
        console.log(doc.data());
        client.emit('resPost', doc.data());
      });
});

Когда я загружаю страницу поста, я получаю ответ, привязанный к пустому снимку.

Редактировать: По предложению @Phil я включил журнал для переменной postID.

console.log('postID', typeof postID, JSON.stringify(postID))

Вывод:

postID string "0"

Вот скриншот консолиесли нужно. ClientID - это идентификатор соединения с веб-сокетом. https://imgur.com/a/MdtwEvu

1 Ответ

1 голос
/ 31 октября 2019

Я очень удивлен, что нигде нет повторяющегося вопроса, но вот ваш ответ ...

Условия равенства запросов Firestore чувствительны к типу. Если ваше свойство коллекции является целым числом, вам нужно сравнить его с целым числом вместо строки.

Например

db.collection('posts').where('id', '==', parseInt(postID, 10))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...