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)