美文网首页
第4章 MongoDB入门

第4章 MongoDB入门

作者: 不系流年系乾坤 | 来源:发表于2016-11-02 15:54 被阅读13次

    BSON

    BSON这种格式是专门为MongoDB而开发的,类似json的一种二进制格式。
    这种格式不一定比json存储的文件小,其优点是解释快。
    

    mongodb副本集

    http://www.cnblogs.com/visionwang/p/3290435.html

    mongodb分片

    http://www.lanceyan.com/tech/arch/mongodb_shard1.html

    mongodb操作

    use

    app/controllers/index.js

    exports.render = function(req, res) {
        if (req.session.lastVisit) {
            console.log(req.session.lastVisit);
        }
    
        req.session.lastVisit = new Date();
    
        res.render('index', {
            title: 'Hello World'
        });
    };
    

    app/controllers/users.js

    var User = require('mongoose').model('User');
    
    exports.create = function(req, res, next) {
        var user = new User(req.body);
    
        user.save(function(err) {
            if (err) {
                return next(err);
            } else {
                res.jsonp(user);
            }
        });
    };
    
    exports.list = function(req, res, next) {
        User.find({}, function(err, users) {
            if (err) {
                return next(err);
            } else {
                res.jsonp(users);
            }
        });
    };
    
    exports.read = function(req, res, next) {
        res.jsonp(req.user);
    };
    
    exports.update = function(req, res, next) {
        User.findByIdAndUpdate(req.user.id, req.body, function(err, user) {
            if (err) {
                return next(err);
            } else {
                res.jsonp(user);
            }
        })
    };
    
    exports.delete = function(req, res, next) {
        req.user.remove(function(err) {
            if (err) {
                return next(err);
            } else {
                res.jsonp(req.user);
            }
        })
    };
    
    exports.userByID = function(req, res, next, id) {
        User.findOne({
            _id: id
        }, function(err, user) {
            if (err) {
                return next(err);
            } else {
                req.user = user;
                next();
            }
        });
    };
    

    app/models/user.js

    var mongoose = require('mongoose'),
    Schema = mongoose.Schema;
    
    var UserSchema = new Schema({
        firstName: String,
        lastName: String,
        email: {
            type: String,
            match: /.+\@.+\..+/
        },
        username: {
            type: String,
            unique: true,
            trim: true
        },
        password: {
            type: String,
            validate: [
                function(password) {
                    return password.length > 6;
                }, 'Password should longer'
            ]
        },
        website: {
            type: String,
            set: function(url) {
                if (!url) {
                    return null;
                } else {
                    if (url.indexOf('http://') !== 0 && url.indexOf('https://') !== 0) {
                        url = 'http://' + url;
                    }
    
                    return url;
                }
            }
        },
        role: {
            type: String,
            enum: ['Admin', 'Owner', 'User']
        },
        created: {
            type: Date,
            default: Date.now
        }
    });
    
    
    UserSchema.virtual('fullName').get(function() {
        return this.firstName + ' ' + this.lastName;
    }).set(function(fullName) {
        var splitName = fullName.split(' ');
        this.firstName = splitName[0] || '';
        this.lastName = splitName[1] || '';
    });
    
    UserSchema.statics.findOneByUsername = function(username, callback) {
        this.findOne({
            username: new RegExp(username, 'i')
        }, callback);
    };
    
    UserSchema.methods.authenticate = function(password) {
        return this.password === password;
    };
    
    
    UserSchema.set('toJSON', {
        getters: true,
        virtuals: true
    });
    
    mongoose.model('User', UserSchema);
    

    app/routes/index.js

    module.exports = function(app) {
        var index = require('../controllers/index');
        app.get('/', index.render);
    };
    

    app/routes/users.js

    var users = require('../../app/controllers/users');
    
    module.exports = function(app) {
        app.post('/users', users.create);
        app.get('/users', users.list);
        app.get('/users/:userId', users.read);
        app.put('/users/:userId', users.update);
        app.del('/users/:userId', users.delete);
    
        app.param('userId', users.userByID);
    };
    

    app/views/index.ejs

    config/env/development.js

    module.exports = {
        db: 'mongodb://localhost/mean-book',
        sessionSecret: 'Your Application Session Secret',
        viewEngine: 'ejs'
    };
    

    config/config.js

    var path = require('path');
    
    module.exports = require(path.resolve('./config/env/' + process.env.NODE_ENV + '.js'));
    

    config/express.js

    var express = require('express'),
        config = require('./config');
    
    module.exports = function() {
        var app = express();
    
        require('../app/models/user');
    
        app.configure(function() {
            app.use(express.logger('dev'));
    
            app.use(express.json());
            app.use(express.urlencoded());
    
            app.use(express.cookieParser());
            app.use(express.session({
                secret: config.sessionSecret
            }));
    
            app.set('views', __dirname + '/../app/views');
            app.set('view engine', config.viewEngine);
        });
    
        app.configure('production', function() {
            app.use(express.compress());
        });
    
        require('../app/routes/index.js')(app);
        require('../app/routes/users.js')(app);
    
        app.configure(function() {
            app.use(express.static(__dirname + '/../public'));
        });
    
        return app;
    };
    

    public

    server.js

    process.env.NODE_ENV = process.env.NODE_ENV || 'development';
    
    var mongoose = require('mongoose'),
        config = require('./config/config');
    
    var db = mongoose.connect(config.db);
    
    var express = require('./config/express');
    var app = express();
    
    app.listen(3000);
    
    console.log('Server running at http://localhost:3000/');

    相关文章

      网友评论

          本文标题:第4章 MongoDB入门

          本文链接:https://www.haomeiwen.com/subject/ogwvuttx.html