var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {user: 'mongod'});
mongoose.connection.once('open', function() {
tworzę model z jednego pola i surowe: falseniezdefiniowane pola modelu z `surowe: FALSE
var Foo = mongoose.model('Foo', mongoose.Schema({
foo: String
}, {strict: false}));
następnie zapisać model z dwoma polami
Foo.create({foo: "FOO", bar: "BAR"}, function() {
Potem ją przeczytać i wydrukuj go z polami:
Foo.findOne(function (err, f) {
console.log(f, f.foo, f.bar);
});
});
});
Dane wyjściowe to { foo: 'FOO', bar: 'BAR', _id: 53c249e876be58931f760e70, __v: 0 }
, 'FOO'
, undefined
. Nowy element jest poprawnie zapisany, a console.log
może zobaczyć 'BAR'
, ale nie mogę. Jak tylko dodaję pasek do schematu, też to widzę. Czy to zamierzone zachowanie? Jak mogę uzyskać bar
bez uwzględniania go w schemacie?
wiem, mogę określić moje schematu jako '{dowolnym: {}}', a następnie utworzyć '{dowolnym: {foo:" FOO ", bar:" BAR "}}' i wydrukuj 'f.any, f.any.foo, f.any.bar'. Wolałbym jednak nie mieć dodatkowego pola. –
Jeśli używasz {any: {}}, jedynym problemem jest zapisanie wszystkich danych przechowywanych wcześniej w obiekcie, jeśli nie chcesz stracić go podczas aktualizacji obiektu. – isanjosgon