Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js路由未渲染_Javascript_Node.js_Mongodb_Express_Url Routing - Fatal编程技术网

Javascript 节点js路由未渲染

Javascript 节点js路由未渲染,javascript,node.js,mongodb,express,url-routing,Javascript,Node.js,Mongodb,Express,Url Routing,我试图实现一个有司机和乘客(拼车)的网站。 因此,当司机给出详细信息并点击提交时,他会进入一个URL(选择),在那里他可以选择他想要的乘客 我编写了以下代码片段:- app.post('/passenger',function(req,res){ var user = new User({profile:{name:req.body.uname}, type:"passenger", phone_no:req.body.contact,

我试图实现一个有司机和乘客(拼车)的网站。 因此,当司机给出详细信息并点击提交时,他会进入一个URL(选择),在那里他可以选择他想要的乘客

我编写了以下代码片段:-

app.post('/passenger',function(req,res){
        var user = new User({profile:{name:req.body.uname},
        type:"passenger",
        phone_no:req.body.contact,
        origin:{city:req.body.pick},
        destination:{city:req.body.drop}
      //  email:req.body.email,
    //    password:req.body.password
    })
        user.save();
        res.redirect('/');
    });     

app.post('/driver',function(req,res){
        var user = new User({profile:{name:req.body.uname},
        type:"driver",
        phone_no:req.body.contact,
        origin:{city:req.body.pick},
        destination:{city:req.body.drop}
      //  email:req.body.email,
    //    password:req.body.password
    })
            user.save();
            console.log("heyyyy")
            res.redirect('/select');

    });

app.get('/select',function(req,res){
    // User.find(function(err,type){
 //            res.render('select',{type:type});
 //        });
    if (req.user){
        console.log("U are inside")
    if(req.user.type="passenger")
    {
      res.render('select');
    }
    else{
        res.send("You ar not admin");
    }
}
   console.log("u are outside")
   console.log(req.body.uname)
   console.log()     
 });
这些值保存在数据库中,但我无法检索信息(即所有乘客的列表)

我无法处理它(即给出错误)


请帮助我解决问题。

如果不知道您是如何配置express server的,就很难找出问题的根源。无论如何,我已经根据您的上下文创建了一个示例

app.js
文件:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var engine = require('ejs-locals');
var querystring = require('querystring');

var drivers = [];

var passengers = [{name: 'Wilson'}, {name: 'Raul'}];

app.engine('ejs', engine);
app.set('view engine', 'ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.get('/', function(req, res) {
  res.render('driver');
});

app.post('/driver', function(req, res) {
  var driver = {
    name: req.body.name,
    age: req.body.age
  };

  drivers.push(driver);

  var data = {
    driver: driver,
    passengers: passengers
  };

  res.render('passengers', data);
});

app.get('/result', function(req, res) {
  var data = {
    driverName: '',
    passengerNames: []
  };

  data.driverName = req.query.driverName;
  data.passengerNames = data.passengerNames.concat(req.query.passengerNames);

  res.render('result', data);
});

app.post('/api/passengers', function(req, res) {
  var data = {
    passengerNames: req.body.passengerNames,
    driverName: req.body.driverName
  };

  var qs = querystring.stringify(data);
  res.redirect('/result?' + qs);
});

app.listen(4040, function() {
  console.log('server up and running at port 4040');
});
<!doctype html>
<html>
  <head>
    <title>Drivers App</title>
  </head>
  <body>
    <div id="app">
       <%- body %>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function(e) {

        var btnNext = document.getElementById('btnNext');
        btnNext.onclick = function(e) {                   
            var allPassengers = document.querySelectorAll('input[type=checkbox]');
            var selectedPassengers = [].filter.call(allPassengers, function(p) {
              return p.checked;
            });

            var passengerNames = [].map.call(selectedPassengers, function(p) {
              return p.value;
            });

            var driverName = document.getElementById('driverName').innerHTML;

            var r = new XMLHttpRequest();
            r.open('POST', '/api/passengers');
            r.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
            r.onreadystatechange = function() {
              if (r.readyState != 4 || r.status != 200) return;
              document.getElementById('app').innerHTML = r.responseText;
            };

            r.send(JSON.stringify({
              passengerNames: passengerNames,
              driverName: driverName
            }));
        };

      });
    </script>
  </body>
</html>
<% layout('layout.ejs') -%>

<h1> Driver </h1>

<form method="POST" action="/driver">
  <label>Name:</label>
  <input id="name" name="name" type="text"/>
  <br />

  <label>Age:</label>
  <input id="age" name="age" type="text"/>
  <br />
  <br />

  <input type="submit" value="Submit" />
</form>

`views/passengers.ejs`

<% layout('layout') -%>

<h1> Driver </h1>
<p>Name: <span id="driverName"><%= driver.name%></span></p>

<h1> Passengers </h1>
<% passengers.forEach(function(p) {%>
   <input type="checkbox" value=<%= p.name %> /> <%= p.name %> <br />
<% }); %>

<br />
<button id="btnNext">Next</button>
<h1>Success!</h1>

<h2>Driver</h2>
<h3><%= driverName %></h3>
<br />
<h2>Selected Passengers</h2>
<% passengerNames.forEach(function(name) { %>
  <h3><%= name%></h3>
<% }); %>

视图/layout.ejs
文件:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var engine = require('ejs-locals');
var querystring = require('querystring');

var drivers = [];

var passengers = [{name: 'Wilson'}, {name: 'Raul'}];

app.engine('ejs', engine);
app.set('view engine', 'ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.get('/', function(req, res) {
  res.render('driver');
});

app.post('/driver', function(req, res) {
  var driver = {
    name: req.body.name,
    age: req.body.age
  };

  drivers.push(driver);

  var data = {
    driver: driver,
    passengers: passengers
  };

  res.render('passengers', data);
});

app.get('/result', function(req, res) {
  var data = {
    driverName: '',
    passengerNames: []
  };

  data.driverName = req.query.driverName;
  data.passengerNames = data.passengerNames.concat(req.query.passengerNames);

  res.render('result', data);
});

app.post('/api/passengers', function(req, res) {
  var data = {
    passengerNames: req.body.passengerNames,
    driverName: req.body.driverName
  };

  var qs = querystring.stringify(data);
  res.redirect('/result?' + qs);
});

app.listen(4040, function() {
  console.log('server up and running at port 4040');
});
<!doctype html>
<html>
  <head>
    <title>Drivers App</title>
  </head>
  <body>
    <div id="app">
       <%- body %>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function(e) {

        var btnNext = document.getElementById('btnNext');
        btnNext.onclick = function(e) {                   
            var allPassengers = document.querySelectorAll('input[type=checkbox]');
            var selectedPassengers = [].filter.call(allPassengers, function(p) {
              return p.checked;
            });

            var passengerNames = [].map.call(selectedPassengers, function(p) {
              return p.value;
            });

            var driverName = document.getElementById('driverName').innerHTML;

            var r = new XMLHttpRequest();
            r.open('POST', '/api/passengers');
            r.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
            r.onreadystatechange = function() {
              if (r.readyState != 4 || r.status != 200) return;
              document.getElementById('app').innerHTML = r.responseText;
            };

            r.send(JSON.stringify({
              passengerNames: passengerNames,
              driverName: driverName
            }));
        };

      });
    </script>
  </body>
</html>
<% layout('layout.ejs') -%>

<h1> Driver </h1>

<form method="POST" action="/driver">
  <label>Name:</label>
  <input id="name" name="name" type="text"/>
  <br />

  <label>Age:</label>
  <input id="age" name="age" type="text"/>
  <br />
  <br />

  <input type="submit" value="Submit" />
</form>

`views/passengers.ejs`

<% layout('layout') -%>

<h1> Driver </h1>
<p>Name: <span id="driverName"><%= driver.name%></span></p>

<h1> Passengers </h1>
<% passengers.forEach(function(p) {%>
   <input type="checkbox" value=<%= p.name %> /> <%= p.name %> <br />
<% }); %>

<br />
<button id="btnNext">Next</button>
<h1>Success!</h1>

<h2>Driver</h2>
<h3><%= driverName %></h3>
<br />
<h2>Selected Passengers</h2>
<% passengerNames.forEach(function(name) { %>
  <h3><%= name%></h3>
<% }); %>

视图/result.ejs
文件:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var engine = require('ejs-locals');
var querystring = require('querystring');

var drivers = [];

var passengers = [{name: 'Wilson'}, {name: 'Raul'}];

app.engine('ejs', engine);
app.set('view engine', 'ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.get('/', function(req, res) {
  res.render('driver');
});

app.post('/driver', function(req, res) {
  var driver = {
    name: req.body.name,
    age: req.body.age
  };

  drivers.push(driver);

  var data = {
    driver: driver,
    passengers: passengers
  };

  res.render('passengers', data);
});

app.get('/result', function(req, res) {
  var data = {
    driverName: '',
    passengerNames: []
  };

  data.driverName = req.query.driverName;
  data.passengerNames = data.passengerNames.concat(req.query.passengerNames);

  res.render('result', data);
});

app.post('/api/passengers', function(req, res) {
  var data = {
    passengerNames: req.body.passengerNames,
    driverName: req.body.driverName
  };

  var qs = querystring.stringify(data);
  res.redirect('/result?' + qs);
});

app.listen(4040, function() {
  console.log('server up and running at port 4040');
});
<!doctype html>
<html>
  <head>
    <title>Drivers App</title>
  </head>
  <body>
    <div id="app">
       <%- body %>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function(e) {

        var btnNext = document.getElementById('btnNext');
        btnNext.onclick = function(e) {                   
            var allPassengers = document.querySelectorAll('input[type=checkbox]');
            var selectedPassengers = [].filter.call(allPassengers, function(p) {
              return p.checked;
            });

            var passengerNames = [].map.call(selectedPassengers, function(p) {
              return p.value;
            });

            var driverName = document.getElementById('driverName').innerHTML;

            var r = new XMLHttpRequest();
            r.open('POST', '/api/passengers');
            r.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
            r.onreadystatechange = function() {
              if (r.readyState != 4 || r.status != 200) return;
              document.getElementById('app').innerHTML = r.responseText;
            };

            r.send(JSON.stringify({
              passengerNames: passengerNames,
              driverName: driverName
            }));
        };

      });
    </script>
  </body>
</html>
<% layout('layout.ejs') -%>

<h1> Driver </h1>

<form method="POST" action="/driver">
  <label>Name:</label>
  <input id="name" name="name" type="text"/>
  <br />

  <label>Age:</label>
  <input id="age" name="age" type="text"/>
  <br />
  <br />

  <input type="submit" value="Submit" />
</form>

`views/passengers.ejs`

<% layout('layout') -%>

<h1> Driver </h1>
<p>Name: <span id="driverName"><%= driver.name%></span></p>

<h1> Passengers </h1>
<% passengers.forEach(function(p) {%>
   <input type="checkbox" value=<%= p.name %> /> <%= p.name %> <br />
<% }); %>

<br />
<button id="btnNext">Next</button>
<h1>Success!</h1>

<h2>Driver</h2>
<h3><%= driverName %></h3>
<br />
<h2>Selected Passengers</h2>
<% passengerNames.forEach(function(name) { %>
  <h3><%= name%></h3>
<% }); %>
成功!
驾驶员

选定的乘客
你能发布html页面吗谢谢很多好友会尝试。你能给我一些参考资料让我发展自己吗