Если вы получаете это сообщение во время сохранения или компиляции сборки, просто закройте все файлы, а затем откройте любой файл для компиляции и сохранения.
Для меня причина в том, что я переименовал файл, и старый файл все еще был открыт.
Я думаю, что это то, что вы ищете Mongoose Strict
option: 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!!
Эй, Крис, посмотрите на Mongous . У меня была та же проблема с мангустом, поскольку мои схемы очень часто изменяются прямо сейчас в процессе разработки. Монгуйский позволил мне иметь простоту Мангуста, хотя я мог свободно определять и изменять свои «схемы». Я решил просто создать стандартные объекты 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, хотя я действительно считаю, что вы пропустили какой-то классный материал промежуточного уровня, например «pre». Мне это ни в коем случае не нужно. Надеюсь, это поможет !!!
На самом деле режим «Смешанный» (Schema.Types.Mixed
) выглядит так, что в Mongoose ...
он принимает объект JS без произвольной формы, поэтому все, что вы можете на него набросить. Кажется, вам нужно активировать сохранение этого объекта вручную после этого, но это похоже на справедливый компромисс.
Mixed
«Что угодно» SchemaType, его гибкость возникает при компромисс с ним сложнее поддерживать. Смешанный доступен либо через
Schema.Types.Mixed
, либо путем передачи пустого литерала объекта. Следующие эквиваленты:var Any = new Schema({ any: {} }); var Any = new Schema({ any: Schema.Types.Mixed });
Поскольку это тип без схемы, вы можете изменить значение на все, что вам нравится, но Mongoose теряет способность автоматически обнаруживать и сохранять эти изменения. Чтобы «сказать» Mongoose, что значение смешанного типа изменилось, вызовите метод
.markModified(path)
документа, передающий путь к только что измененному типу Mixed.blockquote>person.anything = { x: [3, 4, { y: "changed" }] }; person.markModified('anything'); person.save(); // anything will now get saved
Его больше невозможно.
Вы можете использовать Mongoose с коллекциями, у которых есть схема и драйвер узла или другой модуль mongo для этих схемных.
https: //groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ