Библиотека Boost enable_if предлагает хороший чистый интерфейс для использования SFINAE. Один из моих любимых примеров использования - в библиотеке Boost.Iterator . SFINAE используется для включения преобразований типа итератора.
К сожалению, AngularFire2 пока НЕ поддерживает это. Вы можете убедиться в этом, проверив исходный код .
Или, если вы ленивы, как я, и вам не хочется копаться в попытке найти его на GitHub ... то, что я сделал для двойной проверки, это загрузил весь репозиторий в виде ZIP-файла, распаковал и открыл папка в VS Code. Поиск по папке FieldValue
или arrayUnion
ничего не возвращает - эти слова не существуют во всем источнике.
Так что сейчас вы правы в том, что вам нужно придерживаться стандартного пакета Firebase / Firestore. И вложенные массивы определенно являются «законными» вещами, но, как и все остальное, когда их использовать, зависит от вашей ситуации - и я не чувствую себя достаточно квалифицированным или опытным, чтобы оценить вашу ситуацию и дать сильную рекомендацию.