Сделать так, чтобы Firestore возвращал пользователей только с customer_id, который меньше 1000 - PullRequest
0 голосов
/ 01 октября 2019

Как мне извлечь пользователей из моей базы данных, у которых есть customer_id с менее чем 8 цифрами?

Я пытался сделать это:

iter := client.Collection("users").Where("customer_id", "<", "10000").Documents(ctx)

Ноэто ничего не возвращает, хотя я знаю, что у меня есть пользователи, которые выглядят так:

 map[customer_id:111]
 map[customer_id:123]

Если я все же сделаю

iter := client.Collection("users").Where("customer_id", "==", "111").Documents(ctx)

.., он найдет этот документ,

РЕДАКТИРОВАТЬ: я только что заметил, что customer_id хранится в виде строки.

Ответы [ 2 ]

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

Не пользователь магазина, но я нашел некоторую информацию от https://cloud.google.com/firestore/docs/query-data/queries.

countryQuery := cities.Where("state", "==", "CA")
popQuery := cities.Where("population", "<", 1000000)
cityQuery := cities.Where("name", ">=", "San Francisco")

Так что я думаю, что вы должны просто попробовать:

iter := client.Collection("users").Where("customer_id", "<", 10000).Documents(ctx)

0 голосов
/ 09 октября 2019

Причина, по которой это происходит, заключается в том, что в поле указано «строка» вместо «число». Я реплицировал сценарий варианта использования, и это мои выводы:

Моя база данных Firestore:

collection: users
>> document: "auto_id"
   --customer_id: 111
>> document: "auto_id"
   --customer_id: 123
>> document: "auto_id"
   --customer_id: 4500
>> document: "auto_id"
   --customer_id: 3500

Я настроил в Firestore каждый customer_id как строку. Тогда при использовании метода Where("customer_id", "==", "111") даст мне map[customer_id:111], но при использовании Where("customer_id", "<", "1000") или Where("customer_id", "<", 1000) ничего не даст мне, как вы описали.

Затем я пошел в Firestore и изменил тип каждого поля изstring to number и снова выполнил код, так что я получил:

 map[customer_id:111]
 map[customer_id:123]

Мой пример полного кода в GitHub , который работал для меня.

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