[Node] Define MongoDB Model with Mongoose

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
// url friendly
const slug = require('slugs');

const storeSchema = new mongoose.Schema({
    name: {
        type: String,
        trim: true,
        required: 'Please enter a store name!'
    },
    slug: String,
    description: {
        type: String,
        trim: true
    },
    tags: [String]
});

storeSchema.pre('save', function(next) {
    // Only trigger when name changed
    if(this.isModified(this.name)) {
        next();
        return;
    }
    // generate slug JIT
    this.slug = slug(this.name);
    next();
});

module.exports = mongoose.model('store', storeSchema);

Mongoose has some hooks, for example:

storeSchema.pre('save', function(next) {
    // Only trigger when name changed
    if(this.isModified(this.name)) {
        next();
        return;
    }
    // generate slug JIT
    this.slug = slug(this.name);
    next();
});

Before 'save' action, will trigger the function to generate the 'slug' JIT.

原文地址:https://www.cnblogs.com/Answer1215/p/7050858.html