我目前有两个收藏品。一个集合列出了我商店中的所有产品。另一个系列以1-5的等级存储评级。评级存储中的评级成功存储,并且产品已成功存储和列出。但是,我试图引用列出的单个产品的相应评级。我正在使用ng-repeat列出产品数据库中的所有产品。我不确定发生了什么,但我对评级的引用是返回一个空数组。
如何获得每种产品的评分?
产品架构:
var mongoose = require('mongoose');
var productSchema = new mongoose.Schema({
title: {
type: String,
unique: true,
required: true,
index: true
},
description: {
type: String,
required: true
},
price: {
type: Number,
required: true,
min: 0,
},
rating: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Rating'
}],
image: {
type: String,
required: true
}
});
module.exports = mongoose.model('Product', productSchema);
产品控制器(只是阅读部分):
var Product = require('../models/Product');
module.exports = {
read: function (req, res) {
Product.find(req.query)
.populate('Rating')
.exec(function (err, result) {
if (err) { return res.status(500).send(err);}
console.log("this is in the product ctrl", result);
{res.send(result);}
});
},
};
评级架构:
var mongoose = require('mongoose');
var ratingSchema = new mongoose.Schema({
rating: {
type: Number,
enum: [1, 2, 3, 4, 5]
}
});
module.exports = mongoose.model('Rating', ratingSchema);
评级控制器(只需阅读并创建显示):
var Rating = require('../models/Rating');
module.exports = {
create: function (req, res) {
var newRating = new Rating(req.body);
newRating.save(function (err, result) {
if (err) return res.status(500).send(err);
else res.send(result);
});
},
read: function (req, res) {
Rating.find(req.query)
.populate('type')
.exec(function (err, result) {
if (err) return res.status(500).send(err);
else res.send(result);
});
}
};
视图截图:
如果需要更多信息,请告诉我。我认为我的.populate可能有问题,但在阅读本文档之后我认为一切都很好。我很难过。 http://mongoosejs.com/docs/populate.html