mongoose
Schemi di Mongoose
Ricerca…
Schema di base
Uno schema utente di 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);
Metodi dello schema
I metodi possono essere impostati su schemi per aiutare a fare cose relative a quello schema (s), e tenerli ben organizzati.
userSchema.methods.normalize = function() {
this.name = this.name.toLowerCase();
};
Esempio di utilizzo:
erik = new User({
'name': 'Erik',
'password': 'pass'
});
erik.normalize();
erik.save();
Statistica dello schema
Schema Statics sono metodi che possono essere richiamati direttamente da un modello (diversamente dai metodi di schema, che devono essere richiamati da un'istanza di un documento Mongoose). È possibile assegnare un statico a uno schema con l'aggiunta della funzione al di schema statics dell'oggetto.
Un caso d'uso di esempio è per la costruzione di query personalizzate:
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)
})
Schema di GeoObjects
Uno schema generico utile per lavorare con oggetti geografici come punti, linee e poligoni. Sia Mongoose che MongoDB supportano Geojson .
Esempio di utilizzo 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);
Salvataggio del tempo corrente e del tempo di aggiornamento
Questo tipo di schema sarà utile se si desidera tenere traccia dei propri articoli in base al tempo di inserimento o all'aggiornamento.
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);