Адрес электронной почты содержит символ точки (.
). Этот символ считается разделителем полей, если он задан в виде необработанной строки, как в вашем примере. Firestore предполагает, что вы хотите установить в поле «name @ email» со свойством «com» значение указанного вами объекта. См. «Ограничения на пути полей» в документации .
Я не верю, что есть способ обойти это. Возможно, вы захотите перевести эту точку в какой-либо другой символ (возможно, такой, который не может быть в адресах электронной почты) перед доступом к базе данных. Все ваши запросы, использующие это поле, должны быть переведены аналогичным образом.
Основного конструктора будут всегда вызывать в какой-то момент. Если Вы звоните this(...)
вместо base(...)
затем это звонит в другого конструктора в тот же класс - который снова должен будет или вызвать еще одного одноуровневого конструктора или родительского конструктора. Рано или поздно Вы будете всегда добираться до конструктора который любой вызовы base(...)
явно или неявно вызывает конструктора без параметров базового класса.
См. эту статью для больше о конструкторе, объединяющем в цепочку, включая точки выполнения различных битов (таких как переменные инициализаторы).
Конструктор базового класса, берущий аргументы, автоматически выполняется, если Вы не вызываете никакого другого конструктора базового класса, берущего аргументы явно.
Конструктора базового класса всегда вызывают, даже если Вы не называете его явно. Таким образом, Вы не должны делать никакой дополнительной работы, чтобы удостовериться, что это происходит.
Одного из основных конструкторов всегда нужно вызывать, и значение по умолчанию, которым каждого называют, когда основной конструктор явно не указан.
Править: перефразированный для ясности.