Как добавить параметры запроса в useFirestoreConnect

#typescript #firebase #redux #redux-firestore

#typescript #firebase #сокращение #redux-firestore

Вопрос:

Я использую useFirestoreConnect для получения всех данных в «задачах» из firebase.

 useFirestoreConnect([
    {
      collection: 'todos',
    },
  ]);
const todos = useSelector((state: any) => state.firestore.data.todos)
  

Я только хочу получить данные, которые включают uid пользователя. В документах useFirestoreConnect показано только, как получить данные на основе идентификатора документа.

 useFirestoreConnect([
  {
    collection: 'todos',
    doc: todoId
  }
])
const todo = useSelector(
  ({ firestore: { data } }) => data.todos amp;amp; data.todos[todoId]
  

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

 useFirestoreConnect([
  {
    collection: 'todos',
    where: ["owner", "==", auth.uid]
  },
]);
const todos = useSelector((state: any) => state.firestore.data.todos)
  

Результаты в:

Ошибка FirebaseError: функция Query.where() вызывается с недопустимыми данными. Неподдерживаемое значение поля: не определено

 useFirestoreConnect([
  {
    collection: 'todos',
    query: ["owner", "==", auth.uid]
  },
]);
const todos = useSelector((state: any) => state.firestore.data.todos)
  

Приводит к ошибке типа:

Тип ‘{collection: string; query: any[]; }’ не может быть присвоен типу ‘string’.

Ответ №1:

Мне удалось это выяснить. auth.uid не определено. Я просто передал правильный идентификатор аутентификации, и это сработало. Это правильный способ добавления параметров.

 useFirestoreConnect([
  {
    collection: 'todos',
    where: ["owner", "==", auth.uid]
  },
]);
const todos = useSelector((state: any) => state.firestore.data.todos)