在猫鼬中连接两个模型模式
Conecting two model schemas in mongoose
我正在使用 moongose 创建两个需要 'connected' 的模型。 'Paciente' 和 'Consulta'。一个 'Paciente' 可以有多个 'Consultas'... 所以我创建了我的模型,我想使用创建端点测试它们,但由于某种原因,我收到了一个错误,因为我的方式试图将新的 '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 collection
中的 id
这是我收到的错误消息:
TypeError: Cannot read property 'consultas' of null
Visual Studio 代码指出了我将 consulta 推入 Paciente 的行中的错误
据我所知,问题出在您创建 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,因为函数 returns 什么都没有。这就是你得到错误的原因。请试试这个,看看它是否有效。
我正在使用 moongose 创建两个需要 'connected' 的模型。 'Paciente' 和 'Consulta'。一个 'Paciente' 可以有多个 'Consultas'... 所以我创建了我的模型,我想使用创建端点测试它们,但由于某种原因,我收到了一个错误,因为我的方式试图将新的 '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 collection
这是我收到的错误消息:
TypeError: Cannot read property 'consultas' of null
Visual Studio 代码指出了我将 consulta 推入 Paciente 的行中的错误
据我所知,问题出在您创建 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,因为函数 returns 什么都没有。这就是你得到错误的原因。请试试这个,看看它是否有效。