我正在编写一个Web应用程序,主要用作购物车。该应用的登陆/主页反映了当前可供出售的产品。我想要做的是使用产品ID路由到每个产品。猫鼬findById路由问题
'use strict';
var mongoose = require('mongoose');
var productModel = function() {
//Define a super simple schema for our products.
var productSchema = mongoose.Schema({
name: String,
price: Number,
productImg: String,
description: String
});
return mongoose.model('Product', productSchema);
};
module.exports = new productModel();
我能够通过一个管理控制器后,并获得和删除使用上述型号的产品:我如下定义的产品型号(adminProductModel)。很棒!然后,我创建了一个项目控制器,模型和模板,它们定义如下,意图使用项目/产品的ID从主页(index.dust)路由到项目的页面。
项控制器:
'use strict';
var ItemModel = require('../../models/adminProductModel');
var db = require ('../../lib/database');
module.exports = function (router) {
router.get('/index/:id', function (req, res) {
db.ItemModel.findById({_id: req.params._id}, function (err, prod){
if(err){
console.log('FindById filter error:', err)
}
var model = {product: prod}
res.render('item/index', model);
});
});
};
项模型:
'use strict';
module.exports = function ItemModel() {
return {
name: 'item'
};
};
在主页(指数)相关的代码是: 模板(使用灰尘作为渲染引擎):
{>"layouts/master" /}
{<title}
Greatness!
{/title}
{<body}
{?products}
{#products}
<div class="col-sm-6 col-md-3">
<div class="thumbnail">
<a href = "/index/{.id}" class = "thumbnail"><img src="img/photo.png" alt="photo" width ="260" height = "180"/></a>
<center>
<h5>{.name}</h5>
<p>${.price}</p>
<a href="/index/{.id}" class="btn btn-success">Buy</a>
</center>
</div>
</div>
{/products}
{/products}
{/body}
当单击锚标签时,它将路由到正确的ID,从索引页面,但会抛出以下文件未找到错误“URL/index/542237117b5f3e72136d70c5未解析为路由”。
我在这里做错了什么?我知道我必须通过其唯一的objectId来查询数据库中的产品。我在执行这个错误吗?如果是这样,为什么它解析为文件未找到错误或至少提供正确的标记?
感谢提前一吨。我花了几天的时间思考这个问题,并且我已经用尽了所有的方法来解决这个问题。我已经包括数据库的完整性:
use strict';
var mongoose = require('mongoose');
var db = function() {
return {
config: function (conf) {
mongoose.connect('mongodb://' + conf.host + '/' + conf.database);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
console.log('db connection open');
});
}
};
};
module.exports = db();
定义我的itemModel与一个单独的模式可能是明智的吗?这似乎是多余的,更容易出错。我要进一步阅读这个和家里的一些反馈。再次感谢。
感谢。这帮了一大笔钱。 – 2014-10-05 07:15:59