Krótkie i wyraźne: czy istnieje sposób zapobiegania ustawianiu pola schematu, ale pozwalający uzyskać wartość?Pole zabezpieczone schematem mangusty
Byłem w okolicy Mongoose Documentation, ale nie mogę znaleźć tego, czego szukam.
Krótkie i wyraźne: czy istnieje sposób zapobiegania ustawianiu pola schematu, ale pozwalający uzyskać wartość?Pole zabezpieczone schematem mangusty
Byłem w okolicy Mongoose Documentation, ale nie mogę znaleźć tego, czego szukam.
Definiowanie pola jako obiektu pobierającego virtual zamiast tradycyjnego pola.
Na przykład, że chcesz, aby pole swojej kolekcji tylko do odczytu, gdy dostęp poprzez Mongoose pop
:
var schema = new Schema({
city: String,
state: String
});
schema.virtual('pop').get(function() {
return this._doc.pop;
});
Uzyskując dostęp do prywatnej _doc
członek instancji modelu jest to możliwe, może to przerwa w przyszłości, ale działało to dobrze, kiedy testowałem to właśnie teraz.
Alternatywą jeśli chcesz ustawić wartość domyślną, która nigdy nie może być zmieniany:
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
set: function (val) { return this.securedField; }
});
jak to działa? wirtualniki nie są zachowywane, prawda? – sidgate
@sidgate To jest stara odpowiedź i trochę hack, aby odsłonić pole nie zdefiniowane w schemacie, ale obecne w podstawowych dokumentach. Tak więc masz rację, że wirtualności nie zostają utrwalone, ale ponieważ pole 'pop' już istnieje, działa tak, ponieważ surowy dokument jest dostępny za pośrednictwem pola (_ nieudokumentowanego)' _doc'. – JohnnyHK