Just do IT --- Mongodb

Mongodb

数据库操做( CURD )html

插入数据
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; # 数据库为 runoob
 
var insertData = function(db, callback) {  
    //链接到表 site
    var collection = db.collection('site');
    //插入数据
    var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}];
    collection.insert(data, function(err, result) { 
        if(err)
        {
            console.log('Error:'+ err);
            return;
        }     
        callback(result);
    });
}
 
MongoClient.connect(DB_CONN_STR, function(err, db) {
    console.log("链接成功!");
    insertData(db, function(result) {
        console.log(result);
        db.close();
    });
});
> show dbs
admin   0.000GB
local   0.000GB
runoob  0.000GB          # 自动建立了 runoob 数据库
> show tables
site                     # 自动建立了 site 集合(数据表)
> db.site.find()         # 查看集合中的数据
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鸟教程", "url" : "www.runoob.com" }
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鸟工具", "url" : "c.runoob.com" }
>
查询数据
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';    
 
var selectData = function(db, callback) {  
  //链接到表  
  var collection = db.collection('site');
  //查询数据
  var whereStr = {"name":'菜鸟教程'};
  collection.find(whereStr).toArray(function(err, result) {
    if(err)
    {
      console.log('Error:'+ err);
      return;
    }     
    callback(result);
  });
}
 
MongoClient.connect(DB_CONN_STR, function(err, db) {
  console.log("链接成功!");
  selectData(db, function(result) {
    console.log(result);
    db.close();
  });
});
更新数据
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';    
 
var updateData = function(db, callback) {  
    //链接到表  
    var collection = db.collection('site');
    //更新数据
    var whereStr = {"name":'菜鸟教程'};
    var updateStr = {$set: { "url" : "https://www.runoob.com" }};
    collection.update(whereStr,updateStr, function(err, result) {
        if(err)
        {
            console.log('Error:'+ err);
            return;
        }     
        callback(result);
    });
}
 
MongoClient.connect(DB_CONN_STR, function(err, db) {
    console.log("链接成功!");
    updateData(db, function(result) {
        console.log(result);
        db.close();
    });
});
删除数据
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';    
 
var delData = function(db, callback) {  
  //链接到表  
  var collection = db.collection('site');
  //删除数据
  var whereStr = {"name":'菜鸟工具'};
  collection.remove(whereStr, function(err, result) {
    if(err)
    {
      console.log('Error:'+ err);
      return;
    }     
    callback(result);
  });
}
 
MongoClient.connect(DB_CONN_STR, function(err, db) {
  console.log("链接成功!");
  delData(db, function(result) {
    console.log(result);
    db.close();
  });
});

Mongoose

http://wiki.jikexueyuan.com/project/node-lessons/mongodb-mongoose.html
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,能够在异步的环境下执行。
同时它也是针对MongoDB操做的一个对象模型库,封装了MongoDB对文档的的一些增删改查等经常使用方法,让NodeJS操做Mongodb数据库变得更加灵活简单。
咱们经过Mongoose去建立一个“集合”并对其进行增删改查,就要用到它的三个属性:Schema(数据属性模型)、Model、Entitynode

// 首先引入 mongoose 这个模块
var mongoose = require('mongoose');
// 而后链接对应的数据库:mongodb://localhost/test
// 其中,前面那个 mongodb 是 protocol scheme 的名称;localhost 是 mongod 所在的地址;
// 端口号省略则默认链接 27017;test 是数据库的名称
// mongodb 中不须要创建数据库,当你须要链接的数据库不存在时,会自动建立一个出来。
// 关于 mongodb 的安全性,mongodb 我印象中安全机制很残废,用户名密码那套都作得很差,更
// 别提细致的用户权限控制了。不过不用担忧,mongodb 的默认配置只接受来自本机的请求,内网都连不上。
// 当须要在内网中为其余机器提供 mongodb 服务时,或许能够去看看 iptables 相关的东西。
mongoose.connect('mongodb://localhost/test');

// 上面说了,我推荐在同一个 collection 中使用固定的数据形式。
// 在这里,咱们建立了一个名为 Cat 的 model,它在数据库中的名字根据传给 mongoose.model 的第一个参数决定,mongoose 会将名词变为复数,在这里,collection 的名字会是 `cats`。
// 这个 model 的定义是,有一个 String 类型的 name,String 数组类型的 friends,Number 类型的 age。
// mongodb 中大多数的数据类型均可以用 js 的原生类型来表示。至于说 String 的长度是多少,Number 的精度是多少。String 的最大限度是 16MB,Number 的整型是 64-bit,浮点数的话,js 中 `0.1 + 0.2` 的结果都是乱来的。。就不期望什么了。。
// 这里能够看到各类示例:http://mongoosejs.com/docs/schematypes.html
var Cat = mongoose.model('Cat', {
  name: String,
  friends: [String],
  age: Number,
});

// new 一个新对象,名叫 kitty
// 接着为 kitty 的属性们赋值
var kitty = new Cat({ name: 'Zildjian', friends: ['tom', 'jerry']});
kitty.age = 3;

// 调用 .save 方法后,mongoose 会去你的 mongodb 中的 test 数据库里,存入一条记录。
kitty.save(function (err) {
  if (err) // ...
  console.log('meow');
});

mongoose增删改查mongodb

//查
    app.get('/api/blogs', function(req, res) {      
        Blog.find(function(err, todos, txt) {
            if (err)
                res.send(err);  
                res.json(todos);                                    
        });
    });


    //增
    app.post('/api/blogs/:lis', function(req, res) {
        
            
        Blog.create({
            title :req.body.title                   
            
        }, function(err, todo) {        
            if (err)
                res.send(err);
            
            Blog.find(function(err, todos) {
                if (err)
                    res.send(err);
                res.json(todos);
                
                 
            });
        });
        
        

    });

    //删
    app.delete('/api/blogs/:blog_id', function(req, res) {  
        Blog.remove({
            _id : req.params.blog_id //获取参数
        }, function(err, todo) {
            if (err)
                res.send(err);
            Blog.find(function(err, todos) {
                if (err)
                    res.send(err)
                res.json(todos);
            });
        });
    });
    
    //改
    app.post('/api/editblogs/:blog_id', function(req, res) {    
        var id = req.params.blog_id;//获取参数
        var updatestr = {
            'title':  req.body.title 
        };
                
        //mongoose更新
        Blog.findByIdAndUpdate(id, updatestr, function(err, todo) {
            if (err)
                res.send(err);

            Blog.find(function(err, todos) {
                if (err)
                    res.send(err)
                res.json(todos);
            });
        });
    });
//查
    app.get('/api/blogs', function(req, res) {  
    
        Blog.find(function(err, todos, txt) {
            if (err)
                res.send(err);  
                res.json(todos);
                                    
        });
    });


    //增
    app.post('/api/blogs/:lis', function(req, res) {
        //解析为html
        var mktext = markdown.toHTML(req.body.text);        
        var myDate = new Date();
        var addDate = myDate.toLocaleDateString();
        var time = addDate;
        var index=req.params.lis;
            
        Blog.create({
            index :index,//索引
            title :req.body.title, //标题
            text : mktext,//html格式文本
            intro :req.body.intro, //摘要
            mktext:req.body.text,//md格式文本
            author:req.body.author,//做者
            tag:req.body.tag,//
            date : time
                    
            
        }, function(err, todo) {        
            if (err)
                res.send(err);
            
            Blog.find(function(err, todos) {
                if (err)
                    res.send(err);
                res.json(todos);
                
                 
            });
        });
        
        

    });

    //删
    app.delete('/api/blogs/:blog_id', function(req, res) {
        
        Blog.remove({
            _id : req.params.blog_id //获取参数
        }, function(err, todo) {
            if (err)
                res.send(err);

            Blog.find(function(err, todos) {
                if (err)
                    res.send(err)
                res.json(todos);
            });
        });
    });
    
    //改
    app.post('/api/editblogs/:blog_id', function(req, res) {
        
        var id = req.params.blog_id;//获取参数
        var editmktext = markdown.toHTML(req.body.mktext);//解析文本
        var updatestr = {
            'title':  req.body.title ,
            'text': editmktext ,
            'mktext': req.body.mktext ,
            'intro': req.body.intro,
            'author' : req.body.author,
            'tag' : req.body.tag
        };
        
        
        //mongoose更新
        Blog.findByIdAndUpdate(id, updatestr, function(err, todo) {
            if (err)
                res.send(err);

            Blog.find(function(err, todos) {
                if (err)
                    res.send(err)
                res.json(todos);
            });
        });
    });

http://www.nodeclass.com/api/mongoose.html数据库

updata

相关文章
相关标签/搜索