var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {user: 'mongod'});
mongoose.connection.once('open', function() {
ich erstelle ein Modell mit einem Feld und streng: falseundefiniert Modellfelder mit `streng: false`
var Foo = mongoose.model('Foo', mongoose.Schema({
foo: String
}, {strict: false}));
Dann lesen
Foo.create({foo: "FOO", bar: "BAR"}, function() {
Dann ist es ein Modell mit zwei Feldern speichern und drucke es mit seinen Feldern
Foo.findOne(function (err, f) {
console.log(f, f.foo, f.bar);
});
});
});
Der Ausgang ist { foo: 'FOO', bar: 'BAR', _id: 53c249e876be58931f760e70, __v: 0 }
, 'FOO'
, undefined
. Das neue Element ist korrekt gespeichert und console.log
kann 'BAR'
sehen, aber ich kann nicht. Sobald ich dem Schema einen Balken hinzufüge, kann ich es auch sehen. Ist das beabsichtigtes Verhalten? Wie kann ich bar
erreichen, ohne es in das Schema aufzunehmen?
Ich weiß, ich könnte mein Schema als 'definieren {jeder: {}}', dann erstellen '{jeder: {foo:" FOO ", bar:" BAR "}}' und drucke 'f.any, f.any.foo, f.any.bar'. Ich würde das Extrafeld lieber nicht haben. –
Wenn Sie {any: {}} verwenden, müssen Sie alle zuvor im Objekt gespeicherten Daten speichern, wenn Sie sie beim Aktualisieren des Objekts nicht verlieren möchten. – isanjosgon