Поиск…


Основная схема

Основная схема пользователя:

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

Типы схем .

Методы схемы

Методы могут быть установлены в схемах, чтобы помочь делать вещи, связанные с этой схемой (-ами), и держать их хорошо организованными.

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

Пример использования:

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

Статическая статистика

Schema Statics - это методы, которые могут быть вызваны непосредственно с помощью модели (в отличие от методов схемы, которые должны быть вызваны экземпляром документа Mongoose). Вы назначаете статическую схему, добавляя эту функцию к объекту statics схемы.

Один пример использования - для построения пользовательских запросов:

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

Общая схема, полезная для работы с геообъектами, такими как точки, линии и полигоны. И Mongoose, и MongoDB поддерживают Geojson .

Пример использования в узле / экспресс :

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

Сохранение текущего времени и времени обновления

Такая схема будет полезна, если вы хотите отслеживать свои объекты по времени ввода или времени обновления.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow