如何使用nodejs去訪問我們的mongodb資料庫__Oracle

來源:互聯網
上載者:User
//1.如何使用nodejs去訪問我們的mongodb資料庫。//   1.新啟動一個webservice伺服器     var http = require('http');     //3.引入url模組 對前端的請求進行識別     var url = require('url');     //可以將指定的字串轉換為json對象     var qs = require('querystring');//   qs.parse()     var getUser = require('./db.js')[0];//   2.建立服務     http.createServer(function(request,response){               response.writeHead('200',{'Content-Type':'application/json;charset=utf-8',              'Access-Control-Allow-Origin':'*'});          //擷取訪問對象          var _url = request.url;          console.log(_url);          var _path = url.parse(_url).pathname;//擷取請求地址          console.log(_path);          //4.定義一個標準/users 訪問mongodb          switch(_path){              case "/user":              //當瀏覽器輸入user頁面時,調用db.js裡的getUser方法,擷取裡面的資料              //查詢ID為009的使用者資訊  1.設計一個新的介面 請求路徑 /userbyid              //2.在switch中判斷攔截              //3.在db.js裡面實現一個新的查詢方法得到資料                   var _search = url.parse(_url).search;                   var options = {};//                 給json動態賦值//                 options[數組[0]] = 數組[1]值//                 ?/user?age=30&username=b//                 find({age=30&username=b})才能拿到                   if(_search==null){                        console.log("查詢全部");                        options={};                   }else{                        console.log("查詢單個");//  /userId=1008                        //options-->{"userId":"1008"}                        var _ns = _search.substring(1,_search.length);                         _ns = qs.parse(_ns);                        console.log(_ns);                        options = _ns;                   }                   console.log("訪問mongodb資料庫");                   getUser(options,function(callback){                        response.write(JSON.stringify(callback));                        response.end();                   });              break;              case "/userbyid":                   var jsons = '{"userid":"009","username":"admins"}';                   response.write(jsons);                   response.end();                   //問題:                   //1.不同命名是不是問題。                   //2.這樣去設計讓每個介面功能單一的、介面複用性很低                   //設計  將查詢全部資料  和  查詢單個資料的介面都放在/user 介面裡面                   //核心問題:/user識別 我到底想查詢單個還是查詢全部資料//                 查詢全部的介面  /user//                 查詢單個介面     /user?userid=1009//                 1.也就是無論使用者發/user||/user?userid=1009 請求都可以被switch裡面的選擇分支攔截到//                 2.判斷get請求裡面的search是否存在,如果存在查詢單個,如果不存在查詢全部              break;              case "/login":              //1.擷取post裡面的資料                   var _data = '';              //2.request.addListener();進行擷取post提交的資料              //表示的是監聽data事件,只要有了資料,回呼函數裡就會出現值。                    request.addListener('data',function(data){                        _data+=data;//目前每次拿到的data都是單個字元                        //得到完整的字串                   });                   //資料接收完畢                   request.addListener('end',function(data){                        console.log(_data);                        var ops = qs.parse(_data);                        console.log(ops);                        var message = {};                        getUser(ops,function(res){                             if(res.length==0){                                  message.status = "false";                                  message.desc = "使用者名稱密碼錯誤";                                  message.time = "2016/09/09";                             }else{                                  message.auth = "合法使用者";                                  message.status = "true";                                  message.desc = "登陸成功";                                  message.role = "admin";                             }                             response.write(JSON.stringify(message));                             response.end();                        })//                      find({username:"",password:""});                   });                   console.log("this is login api");              break;              case "/goods":                   console.log("只給定假json");              break;              case "/favicon.ico":              break;              //Firefox瀏覽器裡面外掛程式 rest poster,rest api工具          }     //5.需要通過npm 去下載一個nodejs訪問mongodb的外掛程式     //npm install mongodb --save-dev   局部//     6.建立db.js在db.js裡面去訪問我們的mongdb     //response.end();     }).listen(3080);    db.js裡面去訪問我們的mongdb     getUser  是case "/user":的時候,輸出的資料。     getGoods  是 case "/goods":的時候輸出的資料。只要寫入不同的介面或者資料給他們返回就可以了。//1.回調的意義就是在訪問資料庫成功的時候,將資料回傳出來/**db層的實現**/var getUser = function(options,callback){     //實現的具體步驟     //1.引入支援node訪問mongodb外掛程式     var mongodb = require('mongodb');     //2.擷取與資料庫伺服器的串連   new mongodb.Server(ip,port,options)     var server = new mongodb.Server('127.0.0.1',27017,{auto_connection:true});     //3.通過串連擷取資料庫執行個體  new mongodb.Db('資料庫名稱',擷取與資料庫連接對象,安全性原則)     var appdb = new mongodb.Db('app_db',server,{safe:true});     //4.開啟mongodb資料庫//   open(function(err,執行個體){////   });     appdb.open(function(err,appdb){          if(!err){              //5.進行下一步的操作,開啟儲存資料的集合              //appdb.collection('資料庫的名稱||集合的名稱',安全性原則,function(){})               appdb.collection('app_db',{safe:true},function(err,collection){                   if(!err){                        //6.在collection裡面去擷取資料                        collection.find(options).toArray(function(err,doc){   //find中可以根據條件查詢                             //7.資料將放進callback裡面                             if(!err){                                  callback(doc);                             }                        });                   }              });          }     });}var getGoods = function(callback){}module.exports = [getUser,getGoods];html輸入框<div>              使用者名稱:<input id="username"><br/>              密碼:<input id="password"><br/>              <button id="btn">登入</button>          </div>          <script type="text/javascript">          //1.什麼時候開始訪問登入介面。          var _service = "http://127.0.0.1:3080/login";          $("#btn").click(function(){              var _u = $("#username").val();              var _p = $("#password").val();              var _json = {username:_u,password:_p};              //2.觸發登入的時候隨著哪些變化。              $.post(_service,_json,function(data){                   console.log("服務端給我們的狀態值");                   console.log(data);              });          });

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.