MongoDB参考问题

时间:2015-09-02 01:37:43

标签: angularjs mongodb

我目前有两个收藏品。一个集合列出了我商店中的所有产品。另一个系列以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);
      });
  }
};

视图截图:

The view when adding a rating. Only showing empty array

如果需要更多信息,请告诉我。我认为我的.populate可能有问题,但在阅读本文档之后我认为一切都很好。我很难过。 http://mongoosejs.com/docs/populate.html

0 个答案:

没有答案