Я использовал только mongodb. По моему личному мнению, я бы рекомендовал начать с чего-то низкого уровня, а затем двигаться вверх. В противном случае вы можете использовать дополнительные расширенные функции, предоставляемые драйверами более высокого уровня, такими как mongoose, без реальной выгоды.
Проблема, с которой я столкнулся при работе с mongodb, которая свойственна node.js, - плохая документация. Есть документация, и ее много, но она не всегда самая полезная. Что я видел до сих пор нет хороших и подробных примеров производственного использования драйвера. Документация заполнена тем же шаблонным примером открытия соединения, подачи команды и закрытия соединения. Вы можете сказать, что он скопирован и вставлен из шаблона, потому что каждый пример включает в себя все, что может понадобиться, а не только то, что нужно для каждого примера.
Чтобы привести пример, взятый совершенно случайно:
- raw {Boolean, default: false}, выполнять операции с использованием необработанных буферов bson.
Что именно делает «выполнение операций с использованием необработанных буферов bson»? Я нигде не могу найти объяснения, и поиск Google по этой фразе не помогает. Возможно, я мог бы Google дальше, но я не должен был бы. Информация должна быть там. Есть ли какая-либо производительность, стабильность, целостность, совместимость, переносимость или функциональные преимущества для включения / отключения этой опции? Я действительно понятия не имею, не углубившись в код, и если вы находитесь в моей лодке, это серьезная проблема. У меня есть демон, в котором идеальное постоянство не требуется, но программа должна быть очень стабильной во время выполнения. Я могу предположить, что это означает, что он ожидает десериализации и сериализации в JSON или является чем-то низким, внутренним и прозрачным для пользователя, но я могу ошибаться. Хотя я склонен делать хорошие предположения, я не могу полагаться на предположения и догадки при создании жизненно важных систем. Так что здесь я могу либо проверить свое утверждение с помощью кода, либо углубиться в Google или их код. В целом это не так уж и плохо, но я часто сталкиваюсь с этой ситуацией, когда читаю их документацию. Разница может означать дни, потраченные на задачу, а не часы. Мне нужно подтверждение, и документация едва ли дает мне объяснение, не говоря уже о подтверждении.
Документация срочно отправлена. Он не объясняет события, дает расплывчатые подробности о том, когда выдается ошибка, или о характере этих ошибок, и часто есть несколько способов установить соединение, которые могут быть неясными. Вы можете обойтись, и это не совсем бесполезно, но это очень грубо по краям. Вы найдете, что некоторые вещи оставлены для догадок и экспериментов.