Мне нужен столбец с несколькими значениями, он может быть реализован как поле 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 затрагивает некоторые проблемы с ограниченным списком И может быть при необходимости преобразуется в список с разделителями
да, я думаю, что это связано с асинхронной природой дизайна Firebase. Так что signInWithEmail ... работает, но не сразу отражает изменение объекта currentUser. Вместо этого используйте событие onAuthStateChanged для создания любого кода, связанного с currentUser. Процесс будет выглядеть следующим образом:
Зарегистрировать событие onAuthStateChanged, и внутри него обнаружить для currentUser == null, это событие всегда будет вызываться при первом определении с нулевым пользователем, поэтому при установке если внутри, вы можете определить, когда вы имеете дело с реальным входом.
Добавьте функцию входа в систему, но не выполняйте никаких действий при обратном вызове с помощью текущего пользователя, вместо этого переместите соответствующий код в onAuthStageChanged.
Кроме того, не на 100% уверен, что вам нужно обернуть событие внутри модуля и экспортировать его, или что вы должны. При выполнении веб-приложений каждая страница должна быть независимой от состояния и независимой, поэтому каждая страница должна иметь свой собственный код сценария для проверки событий аутентификации и делать все, что подходит.
Я так делаю, и до сих пор работал все время. Удачи!