В настоящее время я работаю над проектом и использую mongodb с mongoose. Недавно я внедрял новый параметр в свою схему в проекте, над которым работал, и столкнулся с решением о том, использовать ли вложенный путь или вложенный документ.
См. Документацию Mongoose для более подробной информации.
Сначала я решил использовать вложенный путь, потому что, судя по тому, что я читал, не было большой разницы, с чем вы пошли, по крайней мере, для параметра, который я вводил. Все, что это должно было быть, это объект с некоторыми дополнительными параметрами для установки «Пользовательских настроек».
Вот что у меня было изначально:
Это было нормально, все работало, и все мои интеграционные тесты проходили.
Проблема, которую я нашел
Однако такой способ написания позволил мне внести ошибку в мой код. В моей функции регистрации пользователя у меня было:
Как видите, я установил preferences: true
, и мои тесты все еще проходили. Почему?! Казалось, схема игнорировала то, что я написал здесь, и переопределяла ее архитектурой схемы по умолчанию, но я, честно говоря, не уверен.
Поддокумент
Затем я обновил схему, чтобы использовать вложенный документ:
Мои тесты начали давать сбои. Что было облегчением, потому что, по крайней мере, теперь это имело смысл! :)
Затем я обновил свою функцию регистрации до:
И все стало проходить. Поэтому в дальнейшем я буду использовать вложенные документы, так как мне это кажется более логичным.
Хотелось бы услышать, сталкивался ли кто-нибудь с подобным решением, и что стало решающим фактором в вашем выборе.