小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

nodejs+mongodb實(shí)現(xiàn)curd 登錄 注銷 分頁等功能的實(shí)現(xiàn)過程

 javenpop 2016-07-13
      e page.
 */
//取得一個(gè)集合中的所有數(shù)據(jù)并實(shí)現(xiàn)分頁效果,這里我們還處理session的登錄判斷等
    exports.index = function(req, res){  
      var mongodb = require('mongodb');    
      var page = req.params.page;  //取得page的值,注意route中的配置,可以有可以沒有這個(gè)page  
      var total; //分頁的總數(shù)  
      var pagenum =4; //分頁的條數(shù)  
      if(page){  
        page = page;  
      }else{  
        page = 1;  
      }  
        
      mongodb.connect('mongodb://localhost:27017/test',function(err,conn){  
        conn.collection('test_insert',function(err,coll){  
            //這里是取得分頁的總數(shù)(筆者最開始在這里的時(shí)候用的是coll.count()取總數(shù),結(jié)果可想而知,所以取總數(shù)大家一定要注意)  
            coll.count(function(err,count){  
                total = count;  
            })  
            //這里用limit+skip實(shí)現(xiàn)mongodb的分頁效果,這種寫法對(duì)于大數(shù)據(jù)量的分頁來說不合適,但是為了方便就這樣了  
            //下面是整個(gè)的過程,實(shí)現(xiàn)了分頁實(shí)現(xiàn)一個(gè)集合中的所有數(shù)據(jù)  
            //在nodejs連接mongodb的時(shí)候判斷是否查詢出了數(shù)據(jù)的時(shí)候我們用toArray方法獲得的第二個(gè)參數(shù)來判斷  
            coll.find().limit(pagenum).skip(pagenum*(page-1)).toArray(function(err,results){  
                if(results.length){  
                  if(page==1){  
                    var prevpage = page;  
                  }else{  
                    var prevpage = page-1;  
                  }  
                      
                  if(page == Math.ceil(total/pagenum)){  
                    var nextpage = Math.ceil(total/pagenum);  
                  }else{  
      
                    //這里要注意下,在對(duì)next的時(shí)候一定要對(duì)page加parseInt方法,不然他會(huì)按照字符串來相加,至于為什么,目前我也不清楚,但是只要加了parseInt就是正確的了  
                    var nextpage = parseInt(page)+1;  
                  }  
            
                  res.render('index',  
                    {  
                        title:'123',  
                        username: req.session.username,  
                        allIndexs:results,  
                        prevpage:prevpage,  
                        nextpage:nextpage  
                        //page: "<a href='/"+prevpage+"'>prev</a>   <a href='/"+nextpage+"'>next</a>"  
                    }         
                  );  
                }else{  
                    console.log('沒有任何數(shù)據(jù)');  
                }  
                conn.close();  //每次執(zhí)行完后都要把鏈接給關(guān)掉(注意關(guān)掉的位置,不能放在collection的時(shí)候就關(guān)閉,不然上面的數(shù)據(jù)永遠(yuǎn)取不到)  
            })  
        })  
      });  
    };  


//向一個(gè)集合中插入數(shù)據(jù)

    exports.insert = function(req,res){  
      var mongodb = require('mongodb');  
      mongodb.connect('mongodb://localhost:27017/test',function(err,conn){  
        conn.collection('test_insert',function(err,coll){  
            //這里的req.body.username是根據(jù)method數(shù)據(jù)發(fā)過來的方法獲得的  
            //使用mongodb插入數(shù)據(jù)的時(shí)候,我們可以在后面放一個(gè)回調(diào)方法來判斷數(shù)據(jù)是否插入成功  
            coll.insert({"username":req.body.username,"password":req.body.password},function(err,results){  
                if(results.length){  
                    res.redirect('/');  
                }else{  
                    res.redirect('/users');  
                }  
                conn.close();  
            })  
        })  
      
      })  
      console.log(req.body.username)  
    };  



//登錄方法,并且保存session,好在ejs中做判斷是否登錄成功
    exports.login = function(req,res){  
        var username = req.body.username;  
        var password = req.body.password;  
        var mongodb = require('mongodb');  
        mongodb.connect('mongodb://localhost:27017/test',function(err,conn){  
            conn.collection('test_insert',function(err,coll){  
                coll.find({'username':username,'password':password}).toArray(function(err,results){  
                    if(results.length){  
                        console.log('success');  
                        req.session.username = username;  
                        res.redirect('/');          
                    }else{  
                        console.log('error');  
                        res.redirect('/notlogin');  
                    }      
                    conn.close();  
                })  
            })  
        })  
    };  

//刪除一個(gè)集合中的方法
    exports.del = function(req,res){  
        var mongodb = require('mongodb');  
        var id = req.params.id;  
        var mongoid = mongodb.BSONPure.ObjectID(id); //nodejs里面吧mongodb的id轉(zhuǎn)化為ObjectID  
        mongodb.connect('mongodb://localhost:27017/test',function(err,conn){  
            conn.collection('test_insert',function(err,coll){  
                //這里的刪除方法來判斷數(shù)據(jù)成功與否,筆者試過了上面用toArray方法和直接在后面更回調(diào)函數(shù)的方法都不能判斷,所以加了if判斷  
                //這里希望大家有什么好的實(shí)現(xiàn)方法說下,畢竟這種方法看起不怎么爽  
                if(coll.remove({'_id':mongoid})){  
                    console.log('恭喜你刪除成功');  
                    res.redirect('/')  
                }else{  
                    console.log('刪除失敗');  
                    res.redirect('/')  
                }  
                conn.close();  
            })  
        })  
    }  



//更新數(shù)據(jù)
    exports.update = function(req,res){  
        var mongodb = require('mongodb');  
        var id = req.params.id;  
         //nodejs里面吧mongodb的id轉(zhuǎn)化為ObjectID  
        mongodb.connect('mongodb://localhost:27017/test',function(err,conn){  
            conn.collection('test_insert',function(err,coll){  
                //下面判斷id是否存在,存在的話就顯示更新的數(shù)據(jù)的模板,否則就更新代碼  
                if(id){  
                    var mongoid = mongodb.BSONPure.ObjectID(id);  
                    coll.find({'_id':mongoid}).toArray(function(err,results){  
                        if(results.length){  
                            console.log('success');  
                            console.log(results);  
                            res.render('update', { 'oneResult':results });  
                        }else{  
                            console.log('error');  
                        }  
                        conn.close();  
                    })  
                }else{  
                    var username = req.body.username;  
                    var password = req.body.password;  
                    var mongoid = mongodb.BSONPure.ObjectID(req.body.id);  
                    //這里的更新也一樣,不知道怎么做判斷更新是否成功,所以干脆就這樣寫了  
                    coll.update({'_id':mongoid},{'$set':{'username':username,'password':password}});  
                    res.redirect('/');  
                    conn.close();  
                }  
            })  
        })  
    }  

//清空session
    exports.logout = function(req,res){  
        req.session.username='';  //清空session  
        res.redirect('/');  
    }  


 

//這里附上app中的方法

app.get('/:page?', routes.index);
app.get('/del/:id',routes.del);
app.get('/logout', routes.logout);
app.get('/update/:id',routes.update);
app.post('/update',routes.update);
app.post('/', routes.insert);
app.post('/login', routes.login);
app.get('/users', user.list);

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多