我是node.js的初学者,并尝试学习如何从mongodb获取数据以通过node.js并在页面上显示。
我正在从教程中学习它,所以请遵循这些方法。
https://www.youtube.com/watch?v=dSQ1CYLHWYM&index=6&list=PL55RiY5tL51rajp7Xr_zk-fCFtzdlGKUp
当我重新启动服务器并加载localhost时,它会卡住并且不会向前移动,也不会在终端或数据库或控制台中显示任何错误。
我不确定为什么它没有在视图中显示任何数据。我的mongodb正在工作并正在侦听端口27017
,如果我去mongod做db.products.find()
,我会看到所有数据。此外,如果我只是像var products = Product.find()
那样做,它会显示一些数据,所以基本上应该有数据进入。
var express = require('express');
var router = express.Router();
var Product = require('../models/product');
/* GET home page. */
router.get('/', function(req, res, next) {
Product.find(function(err, docs){
console.log(docs);
var productChunks = [];
var chunkSize = 3;
for( var i= 0 ; i < docs.length ; i+= chunkSize) {
productChunks.push(docs.splice(i, i + chunkSize));
}
res.render('shop/index', { title: 'Shopping Cart' , products : productChunks});
});
});
module.exports = router;
这是db的架构
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema = new Schema({
imagePath : {type : String, required: true},
title : {type : String, required: true},
description : {type : String, required: true},
price : {type : String, required: true},
});
module.exports = mongoose.model('Product', schema);
这是index.hbs
{{# each products}}
<div class="row">
{{# each this}}
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img class="img-responsive" src="{{this.imagePath}}" alt="...">
<div class="caption">
<h3>{{this.title}}</h3>
<p>{{this.description}}</p>
<div class="clearfix">
<div class="pull-left">${{this.price}}</div>
<a href="#" class="btn btn-success pull-right" role="button">Add to cart</a>
</div>
</div>
</div>
</div>
{{/each}}
</div>
{{/each}}
所以我不确定如何解决这个问题。由于我的本地主机卡住了,即使重新启动数据库和服务器,它仍然无法正常工作。
答案 0 :(得分:0)
问题是我的app.js
文件没有完全配置好。我忘了连接到mongoose
。我已经解决了这个问题。
感谢所有对此发表评论的人。