CRUD(オリジナル)のNode.js

 

 index.jsデータベース接続

必要マングース=定数( 'マングース' // データベース接続ポート27017デフォルトデータベースのMongoDBある 
mongoose.connect( 'のMongoDB:// localhostの/遊び場'、{useNewUrlParser:真へ})
    .then(() =>にconsole.log (「データベース接続成功)) キャッチ(()=>はconsole.log( 'データベース接続は、'失敗しました))

user.jsのユーザールールのセットを作成します

CONSTマングース=必要とする( 'マングース' // 创建用户集合规则 
CONST userSchema = 新しいmongoose.Schema({ 
    名:{ 
        タイプ:文字列、
        必須:
        MINLENGTH: 2 
        MAXLENGTH: 20 
    }、
    年齢:{ 
        タイプ:Number 、
        分: 18 
        最大: 80 
    }、
    パスワード:文字列、
    電子メール:文字列、
    趣味:[文字列] 
})

CONSTユーザー = mongoose.model( 'ユーザ' 、userSchema)

module.exportsは=ユーザー;

要求処理app.js

必要とHTTP =一定( 'HTTP' ); 
constのURL =( 'URL'が必要です
CONSTのQueryString =を( 'のQueryString'必要

// データベースへの接続 
が必要です( './モデル/ index.js' 
ユーザーのconstを ='(必要./model/user.js' 



//は、サーバーを作成し 
CONST =アプリhttp.createServer(); 


// サーバオブジェクト追加要求イベントのため 
app.on( '要求'、非同期(REQ、RES)=> {
     // 要求実施例 
    METHOD = CONST req.method;
     // 要求アドレス 
    (req.url、{クエリurl.parseパス名} CONST = trueに
    にconsole.log(クエリ '123'

    にconsole.log(パス名)
    の場合(メソッド== "GET" ){ 
        listtt = ''
         の場合(パス名== '/リスト' ){ 
            ましょうデータ = のawait User.find()
            listtt + = `
             <!DOCTYPE HTML> 
<HTML LANG = "EN"> 

<HEAD> 
    <メタ文字コード= "UTF-8"> 
    <META NAME = "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0"> 
    <タイトル>ドキュメント</タイトル> 
    <! -最新版本的ブートストラップ核心CSS文件- >
<リンクのrel = "スタイルシート"のhref = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"整合性= "SHA384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va + PmSTsz / K68vbdEjh4u" crossorigin = "匿名"> 
</ head> 

<body> 
    <DIV CLASS = "コンテナ"> 
        <DIV CLASS = "行"> 
            <DIV CLASS = "タイトルCOL-MD-10 COL-MD-オフセット-1"> 
                <DIVクラス= "頭"> 
                    <a href="/add" class="btn btn-success">添加用户する</a> 
                </ div> 
                <divのクラス= "コンテンツ"> 
                    <テーブルクラス=」表table-ストライピング"> 
                        <THEAD> 
                            <TR> 
                                <目>用户名</目>
                                <番目>年龄</目>
                                <TH>爱好</番目> 
                                <TH>邮箱</番目> 
                                <TH $>操作</番目> 
                            </ TR> 
                        </ THEAD> 
                        <TBODY> 
                        ` 
            data.forEach(項目 => { 

                listtt + = 
                    '
                         < TR> 
                            <TD> $ {item.name} </ TD> 
                            <TD> $ {item.age} </ TD> 
                             <TD> 
                    ` 
                item.hobbies。forEachの(項目=> {                             ` 
            })。
            listtt + =
                                  
                    
`
                         </ TBODY> 

                    </ TABLE> 
                </ div> 
            </ div> 
        </ div> 
    </ div> 
</ body> 
</ HTML>`             res.end(listtt)
        } そうであれば(パス名==「/アドオン" ){ 
            を追加 = `
             <!DOCTYPE HTML> 
<HTML LANG = "EN"> 
<HEAD> 
    <メタ文字コード= "UTF-8"> 
    <メタ名= "ビューポート"コンテンツ= "幅=装置幅、initial-規模= 1.0" > 
    <! -最新版本的ブートストラップ核心CSS文件- >
 

    <リンクのrel = "スタイルシート"のhref = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"整合性= "SHA384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va + PmSTsz / K68vbdEjh4u" crossorigin = "匿名"> 
    <タイトル>ドキュメント</タイトル> 
</ head> 

<body> 
    <DIV CLASS = "コンテナ"> 
        <DIV CLASS = "行"> 
            <DIV CLASS = "タイトルCOL-MD-10 COL-MD -offset-1 "> 
                <H1>添加用户</ H1> 
                <フォームメソッド=" POST "> 
                    <DIV CLASS ="フォームグループ"> 
                        <ラベル exampleInputEmail1" =">姓名</ label>は
                        、<入力名= "名前"タイプ= "テキスト"クラス= "フォームコントロール" ID = "exampleInputEmail1"プレースホルダ= "请输入姓名">
                    </ div>  
                    <divのクラス= "フォームグループ">
                        <ラベル = "exampleInputPassword1">年龄</ label>は
                        、<入力名= "年齢"タイプ= "テキスト"クラス= "フォームコントロール" ID = "exampleInputPassword1"プレースホルダ= "请输入年龄"> 
                    < / DIV> 
                    <DIV CLASS = "フォームグループ"> 
                        <ラベルのため = "exampleInputEmail1">密码</ label>は
                        、<入力名= "パスワード"タイプ= "パスワード"クラス= "フォームコントロール" ID = "exampleInputEmail1"プレースホルダ= "请输入密码"> 
                    </ div>
                    <のdivクラス= "フォームグループ"> 
                        <ラベル邮箱</ label>は= "exampleInputPassword1">
                        <入力名= "メール"タイプ= "メール"クラス= "フォームコントロール" ID = "exampleInputPassword1"プレースホルダ= "请输入邮箱"> 
                    </ div> 

                    <DIV CLASS = "チェックボックス"> 
                        <ラベル> 
                        の<input type = "チェックボックス"値= "篮球" NAME = "趣味"> 篮球
                       </ラベル> 
                        <ラベル> 
                        の<input type = "チェックボックス"値= "足球" NAME = "趣味"> 足球
                       </ラベル> 
                        <ラベル>
                        <input type = "チェックボックス"値 = " サッカー"名前= "趣味"> サッカー
                       </ label>は
                        <ラベル> 
                    </ div>
                        <INPUT TYPE = "チェックボックス"値= "敲代码" NAME = "趣味"> 敲代码
                       </ラベル> 
                        <ラベル> 
                        の<input type = "チェックボックス"値= "抽烟" NAME = "趣味"> 抽烟
                       </ラベル> 
                        <ラベル> 
                        の<input type = "チェックボックス"値= "喝酒" NAME = "趣味"> 喝酒
                       </ラベル> 
                        <ラベル> 
                        の<input type ="チェックボックス"値= "烫头" NAME = "趣味">烫头
                       </ label>は
                    <ボタンタイプ= "提出"クラス= "BTN BTN-成功">提交</ボタン> 
                </ FORM> 
            </ div> 
        </ div> 
    </ div> 

</ BODY> 

</ HTML>             ` 
            (res.end [追加])
        } 他のIF(パス名== '/編集' ){ 
            letのユーザー = のawait User.findOne(_id {:} query.id); 
            LET趣味 = [ 'サッカー'、 'バスケットボール'、 'サッカー'、「ノックコード「」煙「」ドリンク「」ホットヘッド"] 
            簡単に編集 = ``
             だった editid = user._id 
            編集 + = `
            
 <!DOCTYPE HTML> 
<HTML LANG = "EN"> 
 
<頭>
    <メタ文字コード= "UTF-8"> 
    <メタ名= "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0"> 
    <! -最新版本的ブートストラップ核心CSS文件- > 
    <リンクのrel = "スタイルシート"のhref = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"整合性= "SHA384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va + PmSTsz / K68vbdEjh4u" crossorigin = "匿名"> 
    <タイトル>ドキュメント</タイトル> 
</ head> 

<body> 
    <DIV CLASS = "コンテナ"> 
        <DIV CLASS = "行"> 
            <DIV CLASS = "タイトルCOL-MD-10 COL-MDは、オフセット-1"> 
                <H1>编辑用户</ H1> 
                <FORM METHOD = "POST" ACTION = "/編集?ID =" $ {user._id}」> 
                <DIV CLASS = "フォームグループ" > 
                    =用<ラベル "exampleInputEmail1" >姓名</ label>は
                    、<入力名= "名前"タイプ= "テキスト"クラス= "フォームコントロール" ID = "exampleInputEmail1"プレースホルダ= "请输入姓名」値= "$ {user.name}" > 
                    <入力名= "クラス= "フォームコントロール"値= "$ {user._id}"隠された"useid"タイプ=" > 
                </ div> 
                <DIVクラス= "フォームグループ" > 
                    <=のラベル "exampleInputPassword1" >年龄</ label>は
                    <入力名="年齢"タイプ= "テキスト"クラス= "フォームコントロール" ID = "exampleInputPassword1"プレースホルダ= "请输入年龄"値= "$ {user.age}" タイプ= "テキスト"クラス= "フォームコントロール" ID = "exampleInputPassword1"プレースホルダ= "请输入年龄"値= "$ {user.age}" > 
                </ div>
                <DIV CLASS = "フォームグループ" > 
                    <ラベル= "exampleInputEmail1" >密码</ label>は
                    、<入力名= "パスワード"タイプ= "パスワード"クラス= "フォームコントロール" ID = "exampleInputEmail1"プレースホルダ= "请输入密码"値= "$ {} user.password " > 
                </ div> 
                <divのクラス= "フォームグループ" > 
                    =のための<ラベル exampleInputPassword1 "">邮箱</ label>は
                    、<入力名= "電子メール"タイプ=「メール」クラス=「フォームコントロール」ID =」exampleInputPassword1 "プレースホルダ="メールボックスを入力してください"の値を=" $ {} user.email " > 
                </ div> 
                <divのクラス="チェックボックス" > 
                ` 

            hobbies.forEach(項目=> { 
                にconsole.log(項目)
                    //現在のサイクル内の項目は、ユーザがアレイに興味がないと判断された
                LET isHobby = user.hobbies.includes(項目); 
                IF(isHobby){ 
                    編集+ = ` 
                   
                       <ラベル> 
                           の<input type = "チェックボックス"にチェック名="趣味"値=" $ {項目}" > $ {項目} 
                       </ label>は
                    ` 
                }他{
                    編集+ = ` 

                       <ラベル> 
                           の<input type =NAME = "趣味"値= "$ {アイテム}" > $ {アイテム} "チェックボックス"名前= "趣味"値= "$ {項目}" 
            // res.end(query.id)
                       </ label>は
                   ` 
                } 
            })
            編集+ = ' 
                    </ div> 
                    <ボタンタイプ= "提出"クラス= "BTN BTN-成功" >提交修改</ボタン> 
                </ FORM> 
            </ div> 
        </ div> 
    </ div> 

</ body> 

</ HTML> ` 
            res.end(編集)
        }そうであれば(パス名== '/削除'){ 
            のawait User.findOneAndDelete({_id:query.id})。
            res.writeHead(301、{ 
                位置: '/リスト]
    }他のIF(方法== "POST" ){ 
        //ユーザーに機能を追加
        (パス名== '/追加')のIF { 
            //ユーザーが提出受け入れ
            ましょうFORMDATA = ''を; 
            //ポスト受け入れパラメータ
            (req.on 'データ'、PARAM => { 
                    FORMDATA + = PARAM; 
                })
                //パラメータは、POST完了受け付け
            req.on( '終了'、非同期を()=> { 
                LET =ユーザーquerystring.parse(formData.replace(/ \ + / G、「」))
                console.log(ユーザー[ '趣味'])

                //データベースに提出提出されたデータ
                のawait User.create(ユーザ); 
                // 301代表リダイレクト
                //位置ジャンプアドレス
                res.writeHead(301、{ 
                    場所: '/リスト' 
                }); 
                res.end(); 
            })
        }他のIF(パス名== '/編集'){ 
            //送信したユーザーを受け入れる
            FORMDATAを聞かせ= ''; 
            //ポスト受け入れパラメータ
            req.on( 'データ'、PARAM => { 
                    FORMDATA + = PARAM; 
                })
                //パラメータは、POST完了受け付け
            req.on( '末端'を、非同期()=> {
                ユーザー= querystring.parse LET(formData.replace(/ \ + / G、 "" ))

                データベースに送信//送信されたデータ 
                のawaitのUser.updateOne({_id:user.useid} 、{名前:user.name、年齢:user.age、パスワード:user.password、電子メール:user.email、趣味:user.hobbies})。
                // 301人の代表はリダイレクト
                //位置ジャンプアドレス
                res.writeHead(301、{ 
                    位置: '/一覧' 
                }); 
                res.end(); 

            })
        } 
    } 
})

はconsole.log( '成功した接続サーバ')
app.listen(3000)

 

おすすめ

転載: www.cnblogs.com/Rivend/p/12334103.html
おすすめ