mongoose
Схемы Mongoose
Поиск…
Основная схема
Основная схема пользователя:
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);