Запросить хранилище по неравенству

Я знаю, что это может быть дубликат Firestore: как выполнить запрос с неравенством / не равно, но я действительно не получил ответа на этот вопрос.

Firestore не принимает оператор неравенства !=.

Предположим, я хочу запросить по uid не мои задачи. Запросить созданные мной задачи легко, так как мне нужно использовать только ==.

У меня есть следующий код.

export default function fetchTasks () {
  return async (dispatch) => {
    const tasks = await db.collection('tasks')
      .where('owner', '>', `/users/${uid}`)
      .where('owner', '<', `/users/${uid}`)
      .get()

    const taskList = []
    tasks.forEach((task) => {
      taskList.push(task.data())
    })

    dispatch({
      type: 'FETCH_TASKS_FULFILLED',
      payload: taskList
    })
  }
}

Кажется, я не могу получить эту работу. Любые предложения будут ценны. Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
495
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновление сентябрь 2020 г .:v7.21.0 представил поддержку запросов не равно (!=)! Это означает, что вы можете просто сделать:

const tasks = await db.collection('tasks')
      .where('owner', '!=', `/users/${uid}`)
      .get();

Оригинальный ответ

В ответе Дуга на эти вопросы говорится, что вам нужно использовать два отдельных запроса для получения результатов: один для db.collection('tasks').where('owner', '>', `/users/${uid}`). и один для db.collection('tasks').where('owner', '<', `/users/${uid}`). Затем вам нужно будет объединить результаты в коде на стороне клиента.

Так:

const tasks = await db.collection('tasks')
  .where('owner', '<', `/users/${uid}`)
  .get()

let taskList = []
tasks.forEach((task) => {
  taskList.push(task.data())
})

tasks = await db.collection('tasks')
  .where('owner', '>', `/users/${uid}`)
  .get()
tasks.forEach((task) => {
  taskList.push(task.data())
})

dispatch({
  type: 'FETCH_TASKS_FULFILLED',
  payload: taskList
})

Спасибо. это сработало! Я думал, что это сделает составной запрос, но безрезультатно. одна мелочь - вы забыли заменить const на let, но в остальном все работает отлично!

nrion 02.04.2018 16:33

Как убедиться, что при этом мы используем лимитный фильтр? В моей коллекции много документов, и это может раздуть ее.

Ayyappa 17.10.2019 17:29

Другие вопросы по теме