mongoose
Mongoose Schemas
Sök…
Grundläggande schema
Ett grundläggande användarschema:
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);
Schemmetoder
Metoder kan ställas in på scheman för att hjälpa till att göra saker som är relaterade till det schemat (erna) och hålla dem välorganiserade.
userSchema.methods.normalize = function() {
this.name = this.name.toLowerCase();
};
Exempel på användning:
erik = new User({
'name': 'Erik',
'password': 'pass'
});
erik.normalize();
erik.save();
Schema Statics
Schemastatik är metoder som kan åberopas direkt av en modell (till skillnad från schemametoder, som måste åberopas av en instans av ett Mongoose-dokument). Du tilldelar ett statiskt till ett schema genom att lägga till funktionen till schemans statics objekt.
Ett exempel på användningsfall är att konstruera anpassade frågor:
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-schema
Ett generiskt schema som är användbart för att arbeta med geoobjekt som punkter, linstringar och polygoner. Både Mongoose och MongoDB stöder Geojson .
Exempel på användning i 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);
Spara aktuell tid och uppdateringstid
Den här typen av schema kommer att vara användbar om du vill hålla reda på dina artiklar genom infogningstid eller uppdateringstid.
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);