Почему firebase signInWithEmailAndPassword не вызывает onAuthChange?

Мне нужен столбец с несколькими значениями, он может быть реализован как поле xml

. Он может быть преобразован в запятую, если это необходимо

, запрашивающий список XML в sql-сервере, используя Xquery .

Будучи полем xml, некоторые проблемы могут быть устранены.

С CSV: не может гарантировать, что каждое значение является правильный тип данных: нет возможности предотвратить 1,2,3, банан, 5

С XML: значения в теге могут быть принудительно заданы для типа


С CSV: не удается использовать ограничения внешнего ключа для привязки значений к таблице поиска;

С XML: все еще проблема


С CSV: не может обеспечить уникальность: никакой возможности предотвратить 1,2,3,3 , 3,5

С XML: все еще проблема


С CSV: невозможно удалить значение из списка, не извлекая весь список.

С XML: отдельные элементы могут быть удалены


С CSV: трудно найти все объекты с заданным значением в списке; вам нужно использовать неэффективное сканирование таблицы.

С XML: поле xml можно индексировать


С CSV: трудно подсчитать элементы в списке или сделать другой агрегат запросы. **

С XML: не особо сложно


С CSV: трудно присоединить значения к справочной таблице, к которой они ссылаются. **

С XML: не особенно сложно


С CSV: трудно получить список в отсортированном порядке.

С XML: не особо сложно


С CSV: сохранение целых чисел в виде строк занимает в два раза больше места, чем сохранение двоичных целых чисел.

С XML: память еще хуже, чем csv


С CSV: Плюс много запятых.

С использованием XML: теги используются вместо запятых


Короче говоря, использование XML затрагивает некоторые проблемы с ограниченным списком И может быть при необходимости преобразуется в список с разделителями

1
задан Doug Stevenson 24 March 2019 в 21:32
поделиться

1 ответ

да, я думаю, что это связано с асинхронной природой дизайна Firebase. Так что signInWithEmail ... работает, но не сразу отражает изменение объекта currentUser. Вместо этого используйте событие onAuthStateChanged для создания любого кода, связанного с currentUser. Процесс будет выглядеть следующим образом:

  1. Зарегистрировать событие onAuthStateChanged, и внутри него обнаружить для currentUser == null, это событие всегда будет вызываться при первом определении с нулевым пользователем, поэтому при установке если внутри, вы можете определить, когда вы имеете дело с реальным входом.

  2. Добавьте функцию входа в систему, но не выполняйте никаких действий при обратном вызове с помощью текущего пользователя, вместо этого переместите соответствующий код в onAuthStageChanged.

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

Я так делаю, и до сих пор работал все время. Удачи!

0
ответ дан Sergio Flores 24 March 2019 в 21:32
поделиться
Другие вопросы по тегам:

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