首页 > 解决方案 > 如何将孩子(参考)添加到猫鼬?

问题描述

我的行是空的。我的方案:

// models/Tobacco.js

const mongoose = require('mongoose');

// FYI: important for populate work!!!
const tobaccoLineSchema = mongoose.Schema({
  name: {type: String, required: true},
  subTitle: {type: String, required: true},
  count: {type: Number, required: true}
});

const Schema = mongoose.Schema;
const TobaccoSchema = new mongoose.Schema({
  createdAt: {
    type: Date,
    default: Date.now
  },
  title: {
    type: String,
    required: true
  },
  subTitle: {
    type: String,
    required: false
  },
  bannerSrc: {
    type: String,
    required: false
  },
  socials: [],
  lines: [
    { 
      type: Schema.Types.ObjectId, 
      ref: 'tobaccoLine' 
    }
  ]
}
,{toObject:{virtuals:true}, toJSON:{virtuals:true}});

const TobaccoLine = mongoose.model('tobaccoLine', tobaccoLineSchema);
module.exports = mongoose.model('tobacco', TobaccoSchema);

在 API 中添加填充行

router.get('/:id', (req, res) => {
  Tobacco.findById(req.params.id).populate('lines')
    .then(tobacco => res.json(tobacco))
    .catch(err => res.status(404).json({ notobaccofound: 'No Tobacco found' }));
});

数据库: 在此处输入图像描述 在此处输入图像描述

我怎么看不到问题。客户端取烟草,但行是空的。

标签: javascriptmongoose

解决方案


需要将属性添加到子实体方案中。

const tobaccoLineSchema = mongoose.Schema({
  name: {type: String, required: true},
  subTitle: {type: String, required: true},
  count: {type: Number, required: true},
_tobacco: { type: Schema.Types.ObjectId, 
      ref: 'tobacco' }
});

推荐阅读