NodeJS学習メモ - Connectミドルウェアアプリケーションexample_node.js

WBOY
リリース: 2016-05-16 16:17:42
オリジナル
1147 人が閲覧しました

1、分析を開始します

皆さん、こんにちは、Big Bear さんがまた来ました。昨日は個人的な事情でブログを書きませんでした。今日は、前回の記事、

「Connect」ミドルウェアの使い方と「Mongodb」の使い方についても紹介しましたが、今日はこれら 2 つのミドルウェアを組み合わせて、改良と再構築を続けて

に到達しました。

完全な学習目的。さて、くだらない話はやめて、本題に進みましょう。

2. 需要分析

(1)、ユーザー登録およびログイン機能 (複雑な対話シナリオは関係せず、ユーザーは登録時にすでに存在するかどうかを判断します)。

(2)、ユーザーは正常にログインし、メモ管理システムのバックグラウンドに入ります (メモ モジュールの機能の追加、削除、変更、確認)。

(3)、ユーザーは簡単な権限区分 (管理者、登録ユーザー) を持つことができます。

(4)、インターフェースは比較的シンプルで、学習に重点を置いています。

3. アプリケーションの設計を開始します (パート 1)

(1)、ユーザーログインページを作成します。コードは次のとおりです:

コードをコピー コードは次のとおりです:



    <頭>
        Bigbear记事本应用登录
       
       
       
       
   
   
       
Bigbear记事本应用登录

            <フォームアクション="/ログイン"メソッド="投稿">
                用户名:


                密 码:
               
                我要注册
           
   

效果图:

(2),建立用户注册页面,代码如下:

复制代码代码如下:

 
 
     <頭>
         Bigbear记事本应用注册
        
        
        
        
    
    
        
Bigbear记事本应用注册

             <フォームアクション="/reg"メソッド="投稿">
                 用户名:


                 密 码:


                
            
    
 

  效果图:

(3),「Mongodb」接代コードを設立,以下:

复制代 代码如下:

 var mongodb = require("mongodb") ;
 var サーバー = 新しい mongodb.Server("localhost",27017,{
     auto_reconnect : true
 }) ;
 var conn = new mongodb.Db("bb",server,{
     安全 : true
 }) ;
 conn.open(function(error,db){
     if(error) エラーをスローします ;
     console.info("mongodb が接続されました!") ;
 }) ;
 エクスポート = module.exports = conn ;

(4),建立モデル实体类“User”,如下:

复制代码代码如下:

 var conn = require("../conn") ;
 関数 User(ユーザー){
     this.name = ユーザー["名前"] ;
     this.password = ユーザー["パスワード"] ;
 } ;
 User.prototype.save = function(callback){
     var that = this ;
     conn.collection("ユーザー",{
         安全 : true
     },function(エラー,コレクション){
         if(error) return conn.close() ;
         collection.findOne({ // 此用户の有無を判断
             名前: that.name
         },function(エラー,ユーザー){
             if(error) return conn.close() ;
             if(!user){
                 collection.insert({
                     名前: that.name "" ,
                     パスワード: that.password ""
                 }、{
                     安全 : true
                 },function(エラー,ユーザー){
                     if(error) return conn.close() ;
                     コールバック && コールバック(ユーザー) ;
                     conn.close() ;
                 });       
             }
             それ以外{
                 callback("ユーザーが登録しました!") ;
             }
         }) ;
     }) ;
 } ;
 User.login = function(名前,パスワード,コールバック){
     conn.collection("ユーザー",{
         安全 : true
     },function(エラー,コレクション){
         if(error) return conn.close() ;
         collection.findOne({
             名前: 名前、
             パスワード: パスワード
         },function(エラー,ユーザー){
             if(error) return conn.close() ;
             コールバック && コールバック(ユーザー) ;
             conn.close() ;
         }) ;
     }) ;
 } ;
 エクスポート = module.exports = ユーザー ;

效果图:

(5)、建立应用程序「アプリ」、如下:

复制代码代码如下:

 // app.js
 var connect = require("./lib/connect") ;
 var user = require("./models/user") ;
 var app = connect.createServer() ;
 app .use(connect.logger("dev"))
 .use(connect.query())
 .use(connect.bodyParser())
 .use(connect.cookieParser())
 .use(connect.static(__dirname "/views"))
 .use(connect.static(__dirname "/public"))
 .use("/login",function(リクエスト,レスポンス,次){
     var name = request.body["name"] ;
     var パスワード = request.body["パスワード"] ;
     user.login(名前,パスワード,機能(ユーザー){
         if(ユーザー){
             response.end("ようこそ:" user["name"] " ^_^ ... ...") ;   
         }
         それ以外{
             response.end("ユーザー:" 名前 " 登録しません!") ;
         }
     }) ;
 })
 .use("/reg",function(リクエスト,レスポンス,次){
     var name = request.body["name"] ;
     var パスワード = request.body["パスワード"] ;
     新しいユーザー({
         名前: 名前、
         パスワード: パスワード
     }).save(関数(ユーザー){
         if(ユーザー && ユーザー["名前"]){
           response.end("ユーザー:" name "登録完了!") ;   
         }
         それ以外{
           response.end("ユーザー: "名前" が登録しました!") ; 
         }
     }) ;
 })
 .listen(8888,function(){
     console.log("ポート ---> 8888 で実行中の Web サーバー。") ;
 }) ;

说明一下:

(1)「connect.query()」-----処理「Get」リクエストパラメータ解析。

(2)「connect.bodyParser()」-----「Post」処理要求パラメータ解析。

(3)「connect.static(__dirname "/views"),connect.static(__dirname "/public")」

それぞれ、モジュール ビュー画像「html」と静的ソース (js、css、jpg、gif) のソース名を表します。

以下はこの应用の目录结构:

四、总结一下

(1)、掌握NodeJs操作データベースの基本的な操作の句。

(2)、分層、モデル、ビデオ、経路。

(3)、本明細書の例を継続的に改変および変更する(例えば、ユーザの登録の有無にかかわらず、「UserManager」を独立してユーザの認証および保存の動作を実行する層プロキシとすることができる)。

(4)、明天継続的に完了した後続の機能、最大限の期待。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート