2016-06-15 6 views
3

私は、expressを実行しているnode.jsのmongoose経由でmongoDbに対して簡単なクエリを実行する基本的なWebアプリケーションを実行しています。しかし、単純なfind()を実行すると、データセット全体を返すことができますが、フォームデータを変数として渡して特定のレストラン({レストラン名:Arbys})を見つけると、応答。変数をクライアントに渡すためにハンドルバーを使用しています。それはルーティングの問題であるかのように思えるが、私は、私はこれはこれは成功した検索を返すハンドルスクリプト(あるフォームデータを渡すと応答が返されない

//external packages 
var express = require('express'); 
var router = express.Router(); 
var mongoose = require('mongoose'); 
var csrf = require('csurf'); 
var passport = require('passport'); 

//organic packages & models 
var restData = require('../models/restaurants'); 



/* GET Mongo home page. */ 
router.get('./mongo', function(req,res,next){ 
    res.render('mongo'); 
}); 

//Get Data **This works fine** 
router.get('/get-data', function(req,res,next){ 
    restData.find() 
     .then(function(doc){ 
      res.render('mongo/mongo', {items: doc}); 
     }) 
}); 

//Goes to query page with form input 
router.get('/query-data', function(req,res,next){ 
    res.render('mongo/mongo-query'); 
}); 

//Query specific data **This does not work** 
router.get('/query-data-details', function(req,res,next){ 
    var RestaurantName = req.query['RestaurantName']; 
    if (RestaurantName.length == 0) { 
     res.render('mongo/mongo', {items: "No Docs Found"}); 
    } else { 
     restData.find({name: RestaurantName}) 
      .then(function (doc) { 
       res.render('mongo/mongo', {items: doc}); 
       console.log(RestaurantName); 
      }); 
    } 
}); 

を照会んJSでGET/POST

を処理する方法を誤解します)クエリなしでは

<div class="container float-left"> 
     <a href="/mongo/get-data" <button type="button" class="btn btn-primary">Load All Data</button></a> 
     <a href="/mongo/query-data" <button type="button" class="btn btn-primary">Query Specific Data</button></a> 
     <h2>Data</h2> 
     <p>Retrieves restauraunt data by Name, Cuisine, Borough and Address 
     <div class="table-responsive"> 
      <table class="table table-bordered"> 
       <thead> 
       <tr> 
        <th>Name</th> 
        <th>Cuisine</th> 
        <th>Borough</th> 
        <th>Address</th> 
       </tr> 
       </thead> 
       <tbody> 
       {{# each items }} 
       <tr> 
        <td>{{this.name}}</td> 
        <td>{{this.cuisine}}</td> 
        <td>{{this.borough}}</td> 
        <td>{{this.address}}</td> 
       </tr> 
       {{/each}} 
       </tbody> 
      </table> 

     </div> 
    </div> 

</body> 

パラメータ、最後に、これは私が

<form method="get" action="/query-data-details"> 
    <input type=text name="RestaurantName"> 
    <input type="submit"> 
</form> 
</body> 
特定の店舗名を照会しようとしているため、これまで持っているものです

あなたがURLのparamsにRestaurantNameを送信していると思われる部分

var routeshome = require('./routes/index'); 
var routesmongo = require('./routes/mongo'); 
var users = require('./routes/users'); 

var app = express(); 

require('./config/passport'); 

// view engine setup 
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'layout', layousDir: __dirname + '/views/layouts' })); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hbs'); 

// 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(expressValidator()); 
app.use(cookieParser()); 
app.use(expressSession({secret: 'b5Frapradra5wen', saveUninitialized: false, resave: false})); 
app.use(flash()); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routeshome); 
app.use('/users', users); 
app.use('/mongo', routesmongo); 
+0

「応答を取得できません」というのは、HTTP応答を返さないということですか? –

+0

具体的には、http:// localhost:3000/query-data-details?RestaurantName = Test – Mark

+1

次のURLを変更してみてください:var RestaurantName = req.body.RestaurantName; – AndreaM16

答えて

-2

をapp.js ...

は 「/ query-に "/クエリデータの詳細" からあなたのルートを変更してみてくださいデータ詳細/:RestaurantName " 次にRestaurantNameを取得できます var RestaurantName = req.query ['RestaurantName'];

+0

http://expressjs.com/en/4x/api.html#req.params –

+0

運がいいですが、app.jsファイルのマッピングに問題があると思われます。アプリの関連部分を追加しましたファイルをトップにする。私はmongo.jsファイルにそこを通る必要があると思いますか? – Mark

関連する問題