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

相關文章
相關標籤/搜索