Как вы используете Mongoose без определения схемы?

В предыдущих версиях Mongoose (для node.js) была возможность использовать его без определения схемы

var collection = mongoose.noSchema(db, "User"); 

Но в текущей версии функция «noSchema» была удалена. Мои схемы, вероятно, будут часто меняться и действительно не вписываются в определенную схему, так есть ли новый способ использования моделей без схемы в мангусте?

Я думаю, что это то, что вы ищете Mongoose Strict

вариант: строгий

Строгий вариант (включен по умолчанию) гарантирует, что значения, добавленные в наш экземпляр модели, которые не были указаны в нашей схеме, не сохраняются в db.

Примечание. Не устанавливайте значение false, если у вас нет веских оснований.

  var thingSchema = new Schema({..}, { strict: false }); var Thing = mongoose.model('Thing', thingSchema); var thing = new Thing({ iAmNotInTheSchema: true }); thing.save() // iAmNotInTheSchema is now saved to the db!! 

На самом деле режим «Смешанный» ( Schema.Types.Mixed ), похоже, делает именно это в Mongoose …

он принимает объект, не имеющий схемы , свободной формы JS – так что бы вы ни выбрали. Кажется, что вам нужно активировать сохранение этого объекта вручную после этого, но это похоже на справедливый компромисс.

смешанный

«Что-то идет» SchemaType, его гибкость приходит к компромиссу с тем, что его сложнее поддерживать. Смешанный доступен либо через Schema.Types.Mixed либо путем передачи пустого литерала объекта. Следующие эквиваленты:

 var Any = new Schema({ any: {} }); var Any = new Schema({ any: Schema.Types.Mixed }); 

Поскольку это тип без схемы, вы можете изменить значение на все, что вам нравится, но Mongoose теряет способность автоматически обнаруживать и сохранять эти изменения. Чтобы «сказать» Mongoose, что значение смешанного типа изменилось, вызовите метод .markModified(path) документа, передающий путь к смешанному типу, который вы только что изменили.

 person.anything = { x: [3, 4, { y: "changed" }] }; person.markModified('anything'); person.save(); // anything will now get saved - person.anything = { x: [3, 4, { y: "changed" }] }; person.markModified('anything'); person.save(); // anything will now get saved 
  • Типы схем Mongoose

Эй, Крис, посмотри на Монгуса . У меня была та же проблема с мангустом, поскольку мои схемы очень часто изменяются прямо сейчас в процессе разработки. Монгуйский позволил мне иметь простоту Мангуста, хотя я мог свободно определять и изменять свои «схемы». Я решил просто создать стандартные объекты JavaScript и хранить их в базе данных так

 function User(user){ this.name = user.name , this.age = user.age } app.post('save/user', function(req,res,next){ var u = new User(req.body) db('mydb.users').save(u) res.send(200) // that's it! You've saved a user }); 

Гораздо проще, чем Mongoose, хотя я действительно считаю, что вы пропустили какой-то classный материал промежуточного уровня, например «pre». Мне это ни в коем случае не нужно. Надеюсь это поможет!!!

Это уже невозможно.

Вы можете использовать Mongoose с коллекциями, у которых есть схема, драйвер узла или другой модуль mongo для этих схемных.

https://groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ

  • NPM устанавливает зависимости в неправильном месте
  • Как обновить значение в json-файле и сохранить его через node.js
  • bodyParser - устаревший express 4
  • Любой способ заставить строгий режим в узле?
  • Как настроить SSL-сертификат для сервера express.js?
  • Попробуйте переустановить `node-sass` на узел 0.12?
  • Как подключить два сервера node.js с websockets?
  • Многострочные обновления PostgreSQL в Node.js
  • Не удается найти модуль 'angleular2 / angular2'
  • выражать тело реакции каротажа
  • Nodejs отправляет файл в ответ
  • Interesting Posts

    Как проверить пропускную способность между 2 сетевыми адаптерами на одном ПК?

    Включая один исходный файл C в другой?

    Запуск того же теста JUnit несколько раз с разными данными

    Можете ли вы указать формат для XmlSerialization datetime?

    Почему не рекомендуется выключать компьютер «жестоко» (выключатель питания)?

    Установка чувствительности мыши на устройство в Windows 7?

    Гость Linux на VirutalBox не может получить доступ к локальному серверу, но может получить доступ к Интернету

    Почему мои иконки рабочего стола реорганизуются при работе с Remote Desktop?

    Выберите «Диалоговое окно« Файл »

    Как отправить байт в формате pdf в браузер в java-приложении?

    Dot character ‘.’ в MVC Web API 2 для запроса, например api / people / STAFF.45287

    NSString: isEqual vs. isEqualToString

    Доступ MS Access (JET) подходит для многопользовательского доступа?

    Проверьте изображение сжигаемого компакт-диска

    Windows 10 Insider ISO скачать

    Давайте будем гением компьютера.