Zoeken…


Basisschema

Een eenvoudig gebruikersschema:

var mongoose = require('mongoose');

var userSchema = new mongoose.Schema({
    name: String,
    password: String,
    age: Number,
    created: {type: Date, default: Date.now}
});

var User = mongoose.model('User', userSchema);

Schemasoorten .

Schema methoden

Methoden kunnen worden ingesteld op schema's om dingen te doen die verband houden met dat schema (nen) en ze goed georganiseerd te houden.

userSchema.methods.normalize = function() {
    this.name = this.name.toLowerCase();
};

Voorbeeld gebruik:

erik = new User({
    'name': 'Erik',
    'password': 'pass'
});
erik.normalize();
erik.save();

Schema Statics

Schemastatica zijn methoden die rechtstreeks door een model kunnen worden aangeroepen (in tegenstelling tot schemamethoden, die moeten worden opgeroepen door een instantie van een Mongoose-document). U wijst een statisch bestand toe aan een schema door de functie toe te voegen aan het statics object van het schema.

Een voorbeeld van een use case is het maken van aangepaste query's:

userSchema.statics.findByName = function(name, callback) {
    return this.model.find({ name: name }, callback);
}

var User = mongoose.model('User', userSchema)

User.findByName('Kobe', function(err, documents) {
    console.log(documents)
})

GeoObjects-schema

Een generiek schema dat handig is om te werken met geo-objecten zoals punten, linestrings en polygonen. Zowel Mongoose als MongoDB ondersteunen Geojson .

Voorbeeld van gebruik in Node / Express :

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

// Creates a GeoObject Schema.
var myGeo= new Schema({
                        name: { type: String },
                        geo : {
                                type : {
                                         type: String, 
                                         enum: ['Point', 'LineString', 'Polygon']
                                },
                                coordinates : Array
                         }
});

//2dsphere index on geo field to work with geoSpatial queries
myGeo.index({geo : '2dsphere'});
module.exports = mongoose.model('myGeo', myGeo);

Huidige tijd en update tijd besparen

Dit soort schema is handig als u uw items wilt bijhouden op basis van invoegtijd of bijwerktijd.

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

// Creates a User Schema.
var user = new Schema({
                       name: { type: String },
                       age : { type: Integer},
                       sex : { type: String },
                       created_at: {type: Date, default: Date.now},
                       updated_at: {type: Date, default: Date.now}
});

// Sets the created_at parameter equal to the current time
user.pre('save', function(next){
    now = new Date();
    this.updated_at = now;
    if(!this.created_at) {
        this.created_at = now
    }
    next();
});

module.exports = mongoose.model('user', user);


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow