Mongoose Schema secured field

mongoose

Solution

Define the field as a virtual getter instead of a traditional field.

For example, say you wanted to make the `pop` field of your collection read-only when accessed via Mongoose:

var schema = new Schema({
    city: String,
    state: String
});

schema.virtual('pop').get(function() {
    return this._doc.pop;
});

By accessing the private `_doc` member of your model instance it's possible this may break in the future, but this worked fine when I tested it just now.

Problem

Short and clear: is there any way to prevent setting a schema field but allowing to get the value? I've been around the Mongoose Documentation but can't find what I'm looking for.

Original source