В настоящее время я работаю над проектом и использую mongodb с mongoose. Недавно я внедрял новый параметр в свою схему в проекте, над которым работал, и столкнулся с решением о том, использовать ли вложенный путь или вложенный документ.

См. Документацию Mongoose для более подробной информации.

Сначала я решил использовать вложенный путь, потому что, судя по тому, что я читал, не было большой разницы, с чем вы пошли, по крайней мере, для параметра, который я вводил. Все, что это должно было быть, это объект с некоторыми дополнительными параметрами для установки «Пользовательских настроек».

Вот что у меня было изначально:

Это было нормально, все работало, и все мои интеграционные тесты проходили.

Проблема, которую я нашел

Однако такой способ написания позволил мне внести ошибку в мой код. В моей функции регистрации пользователя у меня было:

Как видите, я установил preferences: true, и мои тесты все еще проходили. Почему?! Казалось, схема игнорировала то, что я написал здесь, и переопределяла ее архитектурой схемы по умолчанию, но я, честно говоря, не уверен.

Поддокумент

Затем я обновил схему, чтобы использовать вложенный документ:

Мои тесты начали давать сбои. Что было облегчением, потому что, по крайней мере, теперь это имело смысл! :)

Затем я обновил свою функцию регистрации до:

И все стало проходить. Поэтому в дальнейшем я буду использовать вложенные документы, так как мне это кажется более логичным.

Хотелось бы услышать, сталкивался ли кто-нибудь с подобным решением, и что стало решающим фактором в вашем выборе.