【问题标题】:Conecting two model schemas in mongoose在猫鼬中连接两个模型模式
【发布时间】:2020-02-14 17:22:32
【问题描述】:

我正在使用 moongose 创建两个需要“连接”的模型。 “Paciente”和“Consulta”。一个“Paciente”可以有很多“Consultas”......所以我创建了我的模型,我想使用创建端点来测试它们,但由于某种原因,由于我尝试推送新的方式而出现错误“咨询”到 Paciente

Paciente型号代码:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const pacienteSchema = new Schema({
  guardianName: {
    type: String,
    required: true
  },
  mascotaName: {
    type: String,
    required: true
  },
  direccion: {
    type: String,
    required: true
  },
  cedula: {
    type: String,
    required: true
  },
  tel: {
    type: String,
    required: true
  },
  email: {
    type: String
  },
  esVoluntario: {
    type: String,
    required: true
  },
  numChip: {
    type: String,
    required: true
  },
  especie: {
    type: String,
    required: true
  },
  raza: {
    type: String,
    required: true
  },
  sex: {
    type: String,
    required: true
  },
  age: {
    type: String,
    required: true
  },
  peso: {
    type: String
  },
  vacunado: {
    type: String,
    required: true
  },
  desparacitado: {
    type: String,
    required: true
  },
  consultas: [
    {
      type: Schema.Types.ObjectId,
      ref: "Consulta"
    }
  ]
});

module.exports = mongoose.model("Paciente", pacienteSchema);

咨询型号代码:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const consultaSchema = new Schema({
  pacienteId: {
    type: Schema.Types.ObjectId,
    ref: "Paciente"
  },
  motivo: {
    type: String,
    required: true
  },
  pruebas: [{ type: String }],
  Observaciones: {
    type: String
  },
  diagnostico: {
    type: String
  },
  tratamiento: {
    type: String
  }
});

module.exports = mongoose.model("Consulta", consultaSchema);

创建咨询端点:

const Consulta = require("../models/consulta");
const Paciente = require("../models/paciente");

exports.createCon = async (req, res, next) => {
  const consulta = new Consulta({
    pacienteId: req.body.pacienteId,
    motivo: req.body.motivo,
    pruebas: req.body.pruebas,
    observaciones: req.body.observaciones,
    diagnostico: req.body.diagnostico,
    tratamiento: req.body.tratamiento
  });
  try {
    // const consulta = new Consulta(req.body);

    await consulta.save();
    const paciente = await Paciente.findById(req.pacienteId);
    paciente.consultas.push(consulta);
    await paciente.save();
    res.status(201).json({
      message: "¡Consulta creada con éxito!",
      consulta: consulta
    });
  } catch (err) {
    if (!err.statusCode) {
      err.statusCode = 500;
    }
    next(err);
  }
};

我正在使用邮递员以这种方式尝试端点:


{   
    "pacienteId": "5d961758e627d543445925ce",
    "motivo": "Picazon en la colita, se rasca y lame mucho",
    "pruebas": ["Pruebas Rápida", "Cropológico"],
    "diagnostico": "pulgas y falta de vitaminas",
    "tratamiento": "shampoo y spray antipulgas, pipeta 120ml, pipeta vitaminica 50 ml"
}

pacienteId 是我的 paciente 集合中已经存在的 id

这是我收到的错误消息:

TypeError: Cannot read property 'consultas' of null

Visual Studio 代码指出我将咨询推送到 Paciente 的那一行的错误

【问题讨论】:

    标签: node.js mongoose mongoose-schema


    【解决方案1】:

    据我所知,问题出在创建 paciente 常量的那一行,

        const paciente = await Paciente.findById(req.pacienteId);
    

    pacienteId 位于 req.body 变量中,而不是 req 变量,所以该行应该是,

        const paciente = await Paciente.findById(req.body.pacienteId);
    

    由于 req.pacienteId 没有患者 ID,因此 paciente 最终为 null,因为该函数不返回任何内容。这就是你得到错误的原因。请试试这个,看看它是否有效。

    【讨论】:

    • @GabrielaReyes 这是我的荣幸。
    猜你喜欢
    • 2021-01-01
    • 2020-12-09
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2014-06-22
    • 2012-02-02
    • 2016-08-05
    相关资源
    最近更新 更多