Ich habe das folgende Schema.Wie Mungo Default-Wert zu beschränken, die nicht in der Datenbank während der Suche()
var UserSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
test: {
type: String,
default: 'hello world'
}
});
UserSchema.pre('save', function(callback) {
var user = this;
this.test = undefined; // here unset test field which prevent to add in db
});
module.exports = mongoose.model('User', UserSchema);
Aber wenn ich Daten zum Beispiel finden
User.find(function(err, users) {
if (err)
res.send(err);
res.json(users);
});
es gibt immer
[
{
_id: "56fa6c15a9383e7c0f2e4477",
username: "abca",
password: "$2a$05$GkssfHjoZnX8na/QMe79LOwutun1bv2o76gTQsIThnjOTW.sobD/2",
__v: 0,
test: "hello world"
}
]
Wie kann ich eine spezielle param ändern oder fügen Sie Daten ohne test
Feld zu bekommen und ohne Änderung in Frage, sagen wir
User.find({}, '-test', function (err, users){
});
Ich habe auch den Standardwert in Modell: test: "hello world"
, aber ich möchte diesen Wert nicht in der Antwort angezeigt werden. Ich habe auch this.test = undefined;
gesetzt und dies sollte bedeuten, dass es verhindert, dass dieser Standardwert in die Datenbank hinzugefügt wird, aber ich bekomme immer noch dies als Antwort.
Das ist genau das, was '' -test'' tut. Das fragt das OP also nicht. Sie wollen das Feld "automatisch" ausschließen, so dass ** jeder ** '.find()' Aufruf das Feld bereits ausschließt, ohne '' test '' oder '.select ({" test ": false})' 'machen zu müssen oder '.select ({" test ": -1})' (das ist wieder das Gleiche) –
Oh du hast recht. Ich habe den "ohne Änderung in der Abfrage" -Teil vermisst, mein Schlechter. Ich aktualisierte meine Antwort – Komo
Wahrscheinlich sollte beachten, dass [Middleware] (http://mongoosejs.com/docs/middleware.html) wie dies ziemlich spezifisch ist. Du brauchst also auch 'findOne' oder sonst ein' .findOne() 'oder' .findById() 'würde" immer noch "das Feld zurückgeben. Ich frage mich auch, ob das OP nicht die Daten "speichern" möchte, wenn "virtuals" eine bessere Wahl wäre, und sie dann von der Serialisierung ausschließt. Das kann auch gemacht werden. –