猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 > node >

mongoose之Schema使用

2017-12-12 14:27:57 作者:yxl 次阅读 node

### mongoose 的介绍
```
Mongoose库简而言之就是对node环境中MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
```
#### Schema(模式)
```
一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力,仅仅只是一段代码,无法通往数据库端, 仅仅只是数据库模型在程序片段中的一种表现
```
#### Model(模型)
```
Model模型,是经过Schema构造来的,是Schema的编译版本。一个model的实例直接映射为数据库中的一个文档。基于这种关系, 以后的增删改查(CURD)都要通过这个Model实现。
```
 
#### 新建一个db.js
```
//下面是创建mongodb的一个连接
const  mongoose = require('mongoose'),
    DB_URL = 'mongodb://127.0.0.1:27017/mongo';
 
    //连接
    mongoose.connect( DB_URL )
 
    //连接成功
    mongoose.connection.on('connected',function(){
        console.log('Mongoose connection open to ' + DB_URL);  
    })
 
    //连接异常
    mongoose.connection.on('error',function(err){
        console.log('Mongoose connection error: ' + err);  
    })
    //连接断开
    mongoose.connection.on('disconnected', function () {    
        console.log('Mongoose connection disconnected');  
    }); 
 
    module.exports = mongoose
```
#### 创建User Schema模式和model
```
const mongoose = require('./db.js'),
        Schema = mongoose.Schema;
//创建一个 userSchema 的模式
var UserSchema = new Schema({
    username:{type:String},
    password:{type:String}
})
// 把模式(UserSchema)挂载User的模型上,以后的实例直接映射到数据库的一个文档
module.exports = mongoose.model('User',UserSchema);
```
#### 实例模型
```
var User = require('./user.js')
 
 
 
// 插入
 
function insert(){
    var user = new User({
        username:'yxl',
        password:'121212'
    })
 
    user.save((err,res)=>{
        if(err){
            console.log('Error:'+err);
        }else{
            console.log('success:'+res);
        }
    })
}
 
//更新
function update(){
    let whereuser = {'username':'yxl'}
    let update = {'username':'admin','password':'123456'}
    User.update(whereuser,update,(err,res)=>{
        if(err){
            console.log('更新失败:'+err);
        }else{
            console.log('ok:'+res);
        }
    })
}
//删除
function del(){
    let whereUser = {'username':'admin'}
    User.remove(whereUser,(err,res)=>{
        if(err){
            console.log('删除错误'+err);
        }else{
            console.log('ok'+res)
        }
    })
}
//查询
 
function select(){
    let whereUser = {'username':'yxl'};
    User.find(whereUser,(err,res)=>{
        if(err){
            console.log('err:'+err);
        }else{
            console.log('ok:'+res);
        }
    })
}
 
 
 
// insert();
// update()
// del();
select();
```
#### 最后推荐一个MongoDB 可视化工具 Robomongo
http://blog.robomongo.org/robomongo-0-9-0-final/
 

凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词:
0

网友评论