Firebase: как искать все объекты с одинаковым значением во всей базе данных или во вложенной базе данных

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

Вы пишете

lst = [[1] * 4] * 3

Это эквивалентно:

lst1 = [1]*4
lst = [lst1]*3

Это означает, что lst - это список с 3 элемента, указывающие на lst1. Это означает, что две следующие строки эквивалентны:

lst[0][0] = 5
lst1[0] = 5

Поскольку lst[0] - это только lst1.

Чтобы получить желаемое поведение, вы можете использовать понимание списка:

lst = [ [1]*4 for n in xrange(3) ]

В этом случае выражение переоценивается для каждого n, что приводит к другому списку.

1
задан Alex Mamo 24 March 2019 в 08:35
поделиться

1 ответ

Невозможно достичь этого, используя структуру базы данных, поскольку между вашим корневым узлом и объектами, содержащими свойство name_mov, есть 4 дочерних элемента, mov, bolly, new и заданный идентификатор. .

Вы можете использовать следующий запрос:

Query firebaseSearchQuery = mDatabaseReference
    .child("mov")
    .child("bolly")
    .child("new")
    .orderByChild("name_mov")
    .equalTo(s);

Но вы сможете получить только названия фильмов, которые существуют в узле new. Если вы хотите получить все титры, вам следует реструктурировать базу данных, добавив тип фильма (новый, популярный и т. Д.) В качестве свойства ваших объектов, а затем просто использовать:

Query firebaseSearchQuery = mDatabaseReference
    .child("mov")
    .child("bolly")
    .orderByChild("name_mov")
    .equalTo(s);

Таким образом у вас будет меньше уровень, и запрос будет работать отлично.

0
ответ дан Smarpit Singh 24 March 2019 в 08:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: