Я пишу среду JavaScript, которая использует MongoDB в качестве драйвера базы данных.MongoDB - не единственный драйвер, и платформа специально не предназначена для работы только с MongoDB.Назначение драйвера в рамках платформы - преобразовать вызовы базы данных платформы в (в данном случае) вызовы драйвера MongoDB.
Пока все хорошо.Проблемы начинают возникать, когда я взаимодействую с полями _id, которые используют ObjectIds как для первичного ключа, так и для ссылок на другие коллекции.
Основная проблема, с которой я сталкиваюсь в настоящий момент, заключается в том, что если я использую список идентификаторов вскажем, выбрать элемент DOM в моем интерфейсе, я должен преобразовать ObjectID в строки.Но когда я сохраняю документ, который ссылается на документ другой коллекции в одном из ее полей, мне нужно преобразовать строку обратно в ObjectID.
Это не так уж и важно для реализации в моем драйвере (ищите значениятипа String, ключ которого оканчивается на _id), но он действительно начинает плохо работать со встроенными документами или с полем массива, содержащим список ObjectIds.Выполнение обычных операций .include или .filter для этого массива в рамках не возможно, пока я не сопоставлю массив со строками.А поскольку документы можно встраивать бесконечно, я вижу, что это только усложняет процесс разработки более сложных приложений.
Одна вещь, о которой я подумал, - это отказаться от использования нативного механизма _id в MongoDB и реализовать мойсвое уникальное поле для документов, но это кажется мне расточительным и не очень эффективным.
Есть ли хороший способ обойти это?