使用Mongoose访问Schema.Types.ObjectId的值

时间:2018-03-12 15:01:55

标签: node.js mongodb express mongoose

您好我正在学习MongoDB以及如何使用Mongoose,

我正在尝试构建一个简单的锻炼管理器应用程序,其中锻炼有一个名称(例如:“上半身”),一个电子邮件帐户(用于识别创建锻炼的人)和一系列由参考组成的锻炼练习。

我希望能够通过仅使用锻炼名称来查询我可以访问锻炼标题(例如:“俯卧撑”)。

我的workout.js型号:

<img class="img-fluid" src="test1/app/assets/images/portfolio/thumbnails/3.jpg" alt="">

我的exercise.js模特:

image_tag("portfolio/thumbnails/3.jpg", class: "img-fluid")

我的锻炼控制器如下所示:

var mongoose = require('mongoose');
const Schema = mongoose.Schema; 
var Exercise = require('./exercise');

const workoutSchema = new Schema({
  title:     {type: 'String', required: true},
  email:      {type: 'String', required: true},
  exercises: [{ type: Schema.Types.ObjectId, ref: 'Exercise' }],
});

module.exports = mongoose.model('Workout', workoutSchema);

在我的routes.js中我有这个:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var exerciseSchema = new mongoose.Schema({
   title:       {type: String, required: true}
}, {
   timestamps: true
});

module.exports = mongoose.model('Exercise', exerciseSchema);

非常感谢任何帮助或提示!

1 个答案:

答案 0 :(得分:0)

我不确定你在这里做了什么res.json({exercises.title});你能试试吗?希望它有效

Workout.findOne({ title: req.params.workout_name})
      .populate('exercises')
      .exec((err, workout) => {
        if (err){
            res.send(err);
        } else {
            res.send({ exercises: workout.exercises });
        }
});

然后,在您的客户端,您可以迭代练习数组并访问练习标题