Как Dynami c добавить массив функций к функции javascript? - PullRequest
0 голосов
/ 13 января 2020

У меня есть эта структура:

db.collection('users')

и я хочу сделать это:

db.collection('users')
   .where('works', 'array-contains', 'CASE_A')
   .where('works', 'array-contains', 'CASE_B')
   .where('works', 'array-contains', 'CASE_C')
   ...

В этом случае я сделаю массив из
(( .where('works', 'array-contains', $ {variable} ))

, и я добавлю это в начале db.collection ('users'), как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Просто создайте встроенный массив:

db.collection('users')
   .where('works', 'array-contains', ['CASE_A', 'CASE_B', 'CASE_C'])

Или используйте переменную, если хотите:

const array = ['CASE_A', 'CASE_B', 'CASE_C']
db.collection('users')
   .where('works', 'array-contains', array)

Если вы действительно хотите найти документы, где все случаи присутствуют (не там, где присутствуют любые случаев), вы не сможете использовать запрос типа, содержащего массив. Вам нужно будет преобразовать ваш массив в объект и запросить его, как показано в этом вопросе: Firestore: Multiple 'array-contains'

1 голос
/ 13 января 2020

Пожалуйста, попробуйте этот код.

const makeItem = value => `.where('works', 'array-contains',${value}`

const arrFuncs = [
    makeItem('CASE_A'),
    makeItem('CASE_B'),
    makeItem('CASE_C'),
]

const initialCmd = `db.collection('users')`
eval(initialCmd + arrFuncs.join(''))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...