2017-06-17 16 views
1

私はNodejsとmongodbが新しく、データベースにデータを挿入し、フォームを送信している間に404を取得しようとしています。コードの何が間違っているかわからない。どんな助けもありがとう。これは私のコードです。Nodejs + Expressjs + EJS + Mongodb

App.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var mongo = require('mongodb'); 

var index = require('./routes/index'); 
var restaurant = require('./routes/restaurant'); 
var shopping = require('./routes/shopping'); 
var hotel = require('./routes/hotel'); 
var aboutus = require('./routes/about'); 
var event = require('./routes/event'); 
var admin = require('./routes/admin'); 



var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/restaurant',restaurant); 
app.use('/shop',shopping); 
app.use('/hotel',hotel); 
app.use('/about',aboutus); 
app.use('/event',event); 
app.use('/admin',admin); 
app.use('/insert',admin); 
app.use('/get-data',admin); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Page Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

module.exports = app; 

admin.js

var express = require('express'); 
var router = express.Router(); 
var mongo = require('mongodb'); 
var mongoClient = mongo.MongoClient; 
var assert = require('assert'); 

var url = 'mongodb://localhost:27017/aligarhcity'; 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('admin', { title: 'Aligarh City'}); 
}); 

//READ THE DATA FROM DATABASE 
router.get('/get-data', function(req,res,next){ 
    var resultArray = []; 
    mongoClient.connect(url,function (err,db) { 
    assert.equal(null,err); 
    var cursor = db.collection('shopping').find(); 
    cursor.forEach(function(doc,err){ 
     assert.equal(null,err); 
     resultArray.push(doc); 
    },function() { 
     db.close(); 
     res.render('/admin',{item:resultArray}); 
    }); 
}); 
}); 

//iNSERT THE DATA IN THE DATABASE 
router.post('/insert', function(req,res,next){ 
    var shop = { 
    shop_name:req.body.shop_name, 
    shop_address:req.body.shop_address, 
    shop_city:req.body.shop_city, 
    shop_zip:req.body.shop_zip, 
    shop_email:req.body.shop_email, 
    shop_phone:req.body.shop_phone, 
    shop_rating_5: '10', 
    shop_rating_4: '10', 
    shop_rating_3: '10', 
    shop_rating_2: '10', 
    shop_rating_1: '10' 
}; 
console.log(shop_name,shop_city,shop_address,shop_zip,shop_email,shop_phone); 
mongoClient.connect(url,function (err,db) { 
    assert.equal(null,err); 
    db.collection('shopping').insertOne(shop,function (err, result) { 
     assert.equal(null,err); 
     console.log('Item Inserted Successfully'); 
     db.close(); 
    }); 
}); 
res.redirect('/'); 
}); 

module.exports = router; 

Admin.ejs

<!DOCTYPE html> 
<html> 
<head> 
    <title><%=title%></title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
</head> 
<body bgcolor="White" height="100%"> 
<table height="100%" width="100%" border=0> 
    <tr width="100%"> 
     <td width="100%" height="100%"> 
      <table width="100%" height="100%" background="/images/city.gif" border=0> 
       <tr width="100%" height="100%"> 
        <td width="100%" height="100%"> 
         <% include template/header.ejs%> 
         <h1 align="center"><img src="/images/aligarh.png" height="450" width="1000"></h1> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
    <tr width="100%"> 
     <td width="100%"> 
      <div> 
      <form action="/insert" method="post"> 
       <table width="30%" border="1"> 
        <tr> 
         <td> 
          <label for="shop_name">Shop Name:</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_name" name="shop_name" placeholder="Enter your shop name" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label for="shop_address">Shop Address</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_address" name="shop_address" placeholder="Enter your shop address" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label for="shop_city">Shop City</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_city" name="shop_city" placeholder="Enter your shop city" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label for="shop_zip">Shop Zip</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_zip" name="shop_zip" placeholder="Enter your shop zip" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label for="shop_email">Shop Email</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_email" name="shop_email" placeholder="Enter your shop email" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label for="shop_phone">Shop Phone</label> 
         </td> 
         <td align="left"> 
          <input type="text" id="shop_phone" name="shop_phone" placeholder="Enter your shop phone" /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <input type="submit" value="Submit"/> 
         </td> 
        </tr> 
       </table> 
      </form> 
      </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <table border="1"> 
       <tr> 
        <td> 
         <a href="/get-data"> Load Data</a> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <% 
         var item=[]; 
         item.forEach(function (items) { %> 
         <li> 
          <%=items.shop_name%> <br> 
          <%=items.shop_address%> <br> 
          <%=items.shop_zip%> 
         </li> 

         <% }) 
         %> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 
</body> 
</html> 
+0

ルートの問題 - ルート上のリクエストメソッドを確認します(ポストまたは取得)。 –

+0

あなたはコードを見て、 – May

+0

あなたがフォームを提出していることを説明することができますか? –

答えて

0

404サーバから主に、あなたの明示的実装を確認し、ルートあなたはアクセスしようとしていますコードで実装されているかどうか

+0

コードを調べて説明することができます – May

+0

指定されたコードでは問題を確認するだけでは不十分です。コードによると、次のルートは許可されているだけです。 'app.use( '/'、index); app.use( '/ restaurant'、レストラン); app.use( '/ shop'、shopping); app.use( '/ hotel'、hotel); app.use( '/ about'、aboutus);app.use( '/ event'、event); app.use( '/ admin'、admin); app.use( '/ insert'、admin); app.use( '/ get-data'、admin); ' しかし、全体の流れを確認するために、このコードでは十分ではありません。私はいくつかの他のサブモジュールでエラーが発生しているかどうかわかりません フルソースを確認する必要があります – Krishna

+0

私は問題の管理リンクを使用しています。すべて正常に動作します。私のルートページからadminリンクをクリックすると、admin.ejsがロードされます。フォームの詳細を追加するだけで、フォームのアクションタグごとに/ insertに行くsubmitボタンをクリックすると、私のapp.jsに404が表示されます。/ insertを管理ページに再度ルーティングしています – May

関連する問題