我正在編寫一個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