NodeJS用三个小点坠毁

我的nodejs项目有一个很奇怪的问题。 该项目是一个具有快递和车把的在线商店,并连接了一个mongo数据库。 在路由器部分我有这样的代码:

router.get('/item/:item', function (req, res, next) { var actItem = {}; Item.find().findOne({ '_id': req.params.item }, function (err, item) { actItem.name = item.item_name; actItem.price = item.price; actItem.description = item.description; actItem.imageLink = item.imageLink; }); res.render('pages/shop/item-view', { title: 'Express', item: actItem }); 

});

它在数据库的URL中查找项目ID,并返回传递要显示的数据的视图。 它工作得很好,但在视图中,我有这样的代码:

 <div id="carouselExampleControls" class="carousel slide" data-ride="carousel"> <div class="carousel-inner"> <div class="carousel-item active"> <img class="d-block w-100" src="{{item.imageLink}}" alt="First slide"> </div> <div class="carousel-item"> <img class="d-block w-100" src="" alt="Second slide"> </div> <div class="carousel-item"> <img class="d-block w-100" src="" alt="Third slide"> </div> </div> <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> 

而且它工作得很好! 但问题来了。 每当我在任何src属性中添加三个点时,它就会崩溃。 即使是更奇怪的是,即使我编辑HTML文件后,在铬渲染,并添加它,如下所示崩溃:

 <img class="d-block w-100" src="..." alt="Second slide"> 

崩溃的错误是这样的:

 actItem.name = item.item_name; ^ TypeError: Cannot read property 'item_name' of undefined 

任何想法如何解决这个问题,为什么发生?

在做任何事情之前,我设法通过检查项目来解决这个问题。

 if (item) { actItem.name = item.item_name; actItem.price = item.price; actItem.description = item.description; actItem.imageLink = item.imageLink; } 

这是因为当我使用…浏览器使请求/项目/ …获取图像,然后req.params.item的值变成…并在数据库中没有_id =的条目.. 。。。 所以项目的价值是不确定的

findOne是一个asynchronous函数,所以调用里面的res.render ,并检查是否不为null:

 router.get('/item/:item', function (req, res, next) { var actItem = {}; Item.find().findOne({ '_id': req.params.item }, function (err, item) { if(item){ actItem.name = item.item_name; actItem.price = item.price; actItem.description = item.description; actItem.imageLink = item.imageLink; res.render('pages/shop/item-view', { title: 'Express', item: actItem } else{ res.render('pages/shop/item-view', { title: 'Express', item: 'defaultValue'}); } }); });