Buscar..


Esquema basico

Un esquema de usuario básico:

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

Tipos de esquemas .

Métodos de esquema

Se pueden establecer métodos en los esquemas para ayudar a hacer cosas relacionadas con los esquemas y mantenerlos bien organizados.

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

Ejemplo de uso:

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

Estática del esquema

Las estadísticas de esquema son métodos que pueden invocarse directamente por un modelo (a diferencia de los métodos de esquema, que deben invocarse mediante una instancia de un documento de Mongoose). Usted asigna una estática a un esquema agregando la función al objeto de statics del esquema.

Un ejemplo de caso de uso es para construir consultas personalizadas:

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

Esquema de geoobjetos

Un esquema genérico útil para trabajar con geo-objetos como puntos, cadenas de líneas y polígonos. Tanto Mongoose como MongoDB son compatibles con Geojson .

Ejemplo de uso en Nodo / 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);

Ahorro de tiempo actual y tiempo de actualización

Este tipo de esquema será útil si desea realizar un seguimiento de sus elementos por el tiempo de inserción o actualización.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow