Recherche…


Schéma de base

Un schéma utilisateur de base:

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);

Types de schéma

Méthodes de schéma

Des méthodes peuvent être définies sur les schémas pour aider à faire les choses liées à ce (s) schéma (s), et les garder bien organisés.

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

Exemple d'utilisation:

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

Schéma statique

Les statistiques de schéma sont des méthodes pouvant être appelées directement par un modèle (contrairement aux méthodes de schéma, qui doivent être appelées par une instance d'un document Mongoose). Vous affectez une statique à un schéma en ajoutant la fonction à l'objet statics du schéma.

Un exemple d'utilisation est la construction de requêtes personnalisées:

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)
})

Schéma GeoObjects

Un schéma générique utile pour travailler avec des objets géo tels que des points, des lignes et des polygones. Mongoose et MongoDB supportent tous deux Geojson .

Exemple d'utilisation dans 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);

Enregistrement de l'heure actuelle et de l'heure de mise à jour

Ce type de schéma sera utile si vous souhaitez conserver la trace de vos éléments par temps d'insertion ou de mise à jour.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow