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

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

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

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

4 Solutions collect form web for “Как вы используете Mongoose без определения схемы?”

Я думаю, что это то, что вы ищете 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

  • Отключение HAProxy + WebSocket
  • Использование Node.js только против использования Node.js с Apache / Nginx
  • Метод Mongoose .find () вызывает зависание запросов
  • Node.js Обработка исключений при передовом опыте
  • Как заполнить субдокумент в мангусте после его создания?
  • В чем разница между зависимостями, devDependencies и peerDependencies в файле npm package.json?
  • Облачные функции Firebase очень медленные
  • Заseleniumие Mongoose vs вложенность объекта
  • Ошибка: невозможно проверить первый сертификат в nodejs
  • Запрос после заполнения в Mongoose
  • Как вы следуете за HTTP-переадресацией в Node.js?
  • Давайте будем гением компьютера.