Вадим,
А) Причём тут CORS? Все заголовки CORS отправляются с сервера, какие конкретно, читайте в документации к CORS. Тот заголовок который прислал я отправляется в запросе, а дальше сервер смотрит, разрешён ли такой заголовок запроса.
Б) Access-Controll-Allow-Headers определяет разрешённые заголовки, а не обязательные, он бы тогда назывался как-нибудь типа Access-Controll-Required-Headers, если бы его целью было задать обязательные заголовки.
Ну, я думаю, что если вам нужно что-то сохранять, то всё-таки лучше использовать базу данных, благо у NodeJS отличная интеграция с различными бд посредствам ORM и ODM.
Если всё-таки это на одну сессию, то можно хранить и в оперативке, но я если честно слабо представляю что происходит в этом коде, перепишите на классах, избавьтесь от консольлогов и отредактируйте вопрос, так будет куда проще.
Фёдор, мы не использовали в наших текстах ни одного слова из его домена, но уже прекрасно понимаем, что говорим об одном и том же))) насколько уже он избитый))
Вы на продакшене хотите это использовать или при разработке?
а) Всё безопасно, вы в атласе и логин и пароль устанавливаете, а ещё можете разрешить доступ с конкретного IP адреса.
б) Локальная монга покажется вам быстрее, если скорость слияния мельканий вашего зрения сравнимо со скоростью слияния мельканий мухи.
Ну начнём с того, что вы выполняете код на платформе NodeJS, а это значит, что вам не нужно боятся Internet Exporer'а => используйте нормальные es6 классы вместо функций и прототипов.
А далее уже, как минимум лично мне, не понятна ваша проблема: JavaScript - динамически типизированный язык, вы в свои массивы можете что угодно совать, что конкретно вас смущает?