Условное предложение where в запросах firestore

Я получил некоторые данные из firestore, но в моем запросе я хочу добавить условное предложение where. Я использую async-await для api и не знаю, как добавить условное предложение where.

Вот моя функция

export async function getMyPosts (type) {
  await api
  var myPosts = []

  const posts = await api.firestore().collection('posts').where('status', '==', 'published')
    .get()
    .then(snapshot => {
      snapshot.forEach(doc => {
        console.log(doc.data())
      })
    })
    .catch(catchError)
}

В моей основной функции я получаю параметр под названием «тип». Основываясь на значении этого параметра, я хочу добавить еще одно предложение qhere к вышеуказанному запросу. Например, if type = 'nocomments', тогда я хочу добавить предложение where .where('commentCount', '==', 0), иначе if type = 'nocategories', тогда предложение where будет запрашивать другое свойство, например .where('tags', '==', 'none')

Я не могу понять, как добавить это условное предложение where.

ПРИМЕЧАНИЕ: в firestore вы добавляете несколько условий, просто добавляя предложения where, такие как - .where("state", "==", "CA").where("population", ">", 1000000) и так далее.


person asanas    schedule 30.01.2018    source источник


Ответы (1)


Добавляйте предложение where в запрос только при необходимости:

export async function getMyPosts (type) {
  await api
  var myPosts = []

  var query = api.firestore().collection('posts')
  if (your_condition_is_true) {  // you decide
    query = query.where('status', '==', 'published')
  }
  const questions = await query.get()
    .then(snapshot => {
      snapshot.forEach(doc => {
        console.log(doc.data())
      })
    })
    .catch(catchError)
}
person Doug Stevenson    schedule 30.01.2018
comment
Как запросить = query.doc (myId) динамически? Я пробовал использовать этот пример и работал с предложением where, но не с doc. - person Jonathan Arias; 27.06.2019
comment
это все еще действует в новом пожарном магазине? коллекция, есть ли у нее метод where или через родительский объект ref? - person Ayyash; 14.06.2021