Как вы используете 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

  • Что конкретно представляет собой цикл событий Node.js?
  • Игнорировать недопустимый самоподписанный сертификат ssl в node.js с https.request?
  • Запись файлов в Node.js
  • Дамп MySQL NodeJS
  • Как можно решить npm UNEPT PEER DEPENDENCY?
  • Grunt.js: что означает -save-dev в npm install grunt --save-dev
  • Запрос Mongoose / mongoDB ... но я пришел из sql-фона
  • node.js - простые HTTP-запросы с сжатием gzip / deflate
  • Как удалить nodejs, установленный из pkg (Mac OS X)?
  • Импорт узлов-модhive с помощью TypeScript
  • node.js require () cache - можно сделать недействительным?
  • Interesting Posts

    как использовать дорожку внутри ngFor угловой 2

    Поддержка Jumplist для шпатлевки для разных сеансов на панели задач Windows 7

    Как разрешить отказ доступа к собственному многопользовательскому программному обеспечению на подключенном или общем сетевом диске в Windows 7?

    AngularJS: ngInclude vs директива

    Как редактировать файлы UTF-8 в vim на окнах

    Cocoapods: Не удалось подключиться к GitHub, чтобы обновить спецификации CocoaPods / Specs repo

    Не удается подключиться к серверу базы данных (mysql workbench)

    Есть ли программа, которая может представлять функции как звук?

    Как обновить метаtags в AngularJS?

    Различия между «java -cp» и «java -jar»?

    Сокращение, чтобы проверить, существует ли объект в массиве для Swift?

    Как восстановить значок жесткого диска? Windows 7

    У нас есть какие-либо общие функции, чтобы проверить, полностью ли загружена страница в Selenium

    Как избежать фигурных скобок для отображения на странице при использовании AngularJS?

    Node.js Имя хоста / IP не соответствует именам альт

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