Могу ли я сохранить объект JS (с методами) в MongoDB? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть несколько объектов, которые кодируют методы форматирования текста и стили CSS, и я хотел бы сохранить их в коллекции MongoDB (используя Mongoose).Объекты являются более сложной версией этого:

const myStyle = {
    book: {
        templates: ["/authors/. ", "/title/. ", "/date/. "],
        authors: {
            format: formatAuthors
        },
        title: {
            format: formatTitle,
            style: {fontStyle: "italic"}
        }
    }
}

Кто-нибудь знает, как отправить такого рода вещи на сервер и сохранить их в коллекции MongoDB?Согласно документации Mongoose, Object не является допустимым schemaType, поэтому я не могу просто сохранить его как объект JS.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Нет, вы не можете сохранить методы в mongodb

0 голосов
/ 11 октября 2018

Object не является допустимым типом схемы Мангуста, но Mixed - это.

SchemaType "все идет", его гибкость достигаетсяпри компромиссе его сложнее поддерживать.Mixed доступен либо через Schema.Types.Mixed, либо путем передачи литерала пустого объекта.

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

В вашем случае, если данные, которые вы хотите сохранить, являются действительными объектами JS, вы сможете их вставить.

Обратите внимание, однако, что, поскольку это schema-less type, при использовании Mixed существуют некоторые ограничения производительности, а также вам необходимо вызвать .markModified(path) при изменении, как указано в документации.

0 голосов
/ 11 октября 2018

Вы можете добавить методы через поле Schema.methods.

SchemaName.methods.methodName = function(){...}

Также взгляните на этот пример здесь для базового использования мангуста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...