Angular + Express + mongodb を使用して何かを構築する最初の試みなので、おそらくこれは完全に間違った方法で行っています。Express は json を提供するために使用されています。その後、Angular がすべてのビューなどを処理します。
Mongoose を使用して Mongo とやり取りしています。
次のデータベース スキーマがあります。
var categorySchema = new mongoose.Schema({
title: String, // this is the Category title
retailers : [
{
title: String, // this is the retailer title
data: { // this is the retailers Data
strapLine: String,
img: String , // this is the retailer's image
intro: String,
website: String,
address: String,
tel: String,
email: String
}
}
]
});
var Category = mongoose.model('Category', categorySchema);
Express では、データを取得するためのルートがいくつかあります。
app.get('/data/categories', function(req, res) {
// Find all Categories.
Category.find(function(err, data) {
if (err) return console.error(err);
res.json(data)
});
});
// return a list of retailers belonging to the category
app.get('/data/retailer_list/:category', function(req, res) {
//pass in the category param (the unique ID), and use that to do our retailer lookup
Category.findOne({ _id: req.params.category }, function(err, data) {
if (err) return console.error(err);
res.json(data)
});
});
上記はうまくいきます - 私は単一の小売業者を手に入れようとして大きな問題を抱えています. 私はカテゴリと小売業者の ID を渡しています...カテゴリで検索を実行してから、その中のコンテンツで findOne を実行するなど、あらゆる種類のことを試しました...しかし、うまくいきません。私はおそらくこれについてすべて間違っていると思います...
ここでこのスレッドを見つけました: Mongoose の findOne サブドキュメントとソリューションを実装しましたが、必要な小売業者だけでなく、すべての小売業者を返します。
// Returns a single retailer
app.get('/data/retailer_detail/:category/:id', function(req, res) {
//pass in the category param (the unique ID), and use that to do our retailer lookup
Category.findOne({_id: req.params.category , 'retailers.$': 1}, function(err, data) {
console.log(data);
if (err) return console.error(err);
res.json(data)
});
});
ありがとう、ロブ