Я только что начал с NodeJS, в настоящее время я делаю простой веб-сайт, где вы найдете на странице приветствия количество карт (загрузочных карт), каждая карта представляет город, а каждый город - объект, хранящийся в базе данных (mongodb), и* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * теперь все равно выглядит так: '1006 *' страница приветствия ”:
<!-- welcome page -->
<!-- styles -->
<link rel="stylesheet" href="/css/welcome.css">
<!-- html -->
<% include ./partials/navbar %>
<div class="row">
<% for (city of data) { %>
<div class="col-sm-4">
<div class="card">
<img src="/images/nyc2.jpg" class="card-img-top" alt="New York City">
<div class="card-body">
<h5 class="card-title">
<%= city.name %>
</h5>
<p class="card-text">
<%= city.description %>
</p>
</div>
<div class="card-footer">
<small class="text-muted"> <a href="/cities/<%= city._id%>">Read more .. </a></small>
</div>
</div>
</div>
<% } %>
</div>
Итак, идея заключается в том, что я получаю города из базы данных, а затем выпускаю их в виде карточек, но я хочу, чтобы пользователь нажал Подробнее ..., чтобы отвезти их на другую страницу, где они могут прочитать больше информации об этом же городе, и для этой цели я проложил маршрут towns.js , например:
// cities routes
// express
const express = require('express');
const router = express.Router();
// load city model
const City = require('../models/City');
// cities page render
router.get('/:id' , (req ,res) => {
const _id = req.params.id;
City.findOne({_id : _id} , (err , data) => {
if(err) throw err;
// view render and pass the data to the view
res.render('city' , {
name : data.name ,
info : data.info
});
});
});
// export the router
module.exports = router;
Наконец, я получаю следующую ошибку:
events.js:174
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'name' of null
at City.findOne (C:\Users\User\Desktop\NodeProje
cts\Citty\routes\cities.js:17:25)
at C:\Users\User\Desktop\NodeProjects\Citty\node
_modules\mongoose\lib\model.js:4638:16
at C:\Users\User\Desktop\NodeProjects\Citty\node
_modules\mongoose\lib\query.js:4345:12
at model.Query.Query._completeOne (C:\Users\User
\Desktop\NodeProjects\Citty\node_modules\mongoose\li
b\query.js:2046:12)
at Immediate.Query.base.findOne.call (C:\Users\U
ser\Desktop\NodeProjects\Citty\node_modules\mongoose
\lib\query.js:2108:10)
at Immediate.<anonymous> (C:\Users\User\Desktop\
NodeProjects\Citty\node_modules\mquery\lib\utils.js:
116:16)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
Emitted 'error' event at:
at C:\Users\User\Desktop\NodeProjects\Citty\node
_modules\mongoose\lib\model.js:4640:13
at C:\Users\User\Desktop\NodeProjects\Citty\node
_modules\mongoose\lib\query.js:4345:12
[... lines matching original stack trace ...]
at processImmediate (timers.js:658:5)
Итак, как мне это запустить?