gpt4 book ai didi

javascript - Mongoose - FindOne 和 Save 不起作用

转载 作者:行者123 更新时间:2023-12-03 00:08:39 25 4
gpt4 key购买 nike

我是 expressJsmongoose (包括 MongoDB)的新手。问题是当我尝试使用 findOne() 查找患者时,捕获错误显示:

model.findOne is not function.

我从来没有遇到过这个错误。我的错误代码是:

var Paciente = require('../modelos/Paciente');
var pacienteSchema = Paciente.pacienteSchema;

/**
*
* Metodo para añadir un nuevo paciente
*/
function nuevoPaciente(request, response) {
var BODY = request.body;
const rutNuevo = BODY.nuevoPaciente.Rut;
var pacienteEntrada = new pacienteSchema(BODY.nuevoPaciente);
try {
console.log(pacienteEntrada);
pacienteEntrada.findOne({
Rut: rutNuevo
}, (err, pacienteExiste) => {
console.log(err);
if (err) {
console.log(err, pacienteExiste);
response.status(500).send({
msjError: 'Error interno al guardar el paciente',
numError: 1,
err
});
} else if (!pacienteExiste) {
console.log("El paciente no existe, hay que guardarlo");
pacienteEntrada.save((err, pacienteSave) => {
console.log(err);
if (err) {
response.status(500).send({
msjError: 'Error interno al guardar el paciente',
numError: 1,
err
});
} else if (!pacienteSave) {
response.status(404).send({
msjError: 'No se ha guardado el usuario',
numError: 3,
err
});
} else {
console.log(pacienteSave);
response.status(200).send({
msjError: 'El paciente se ha guardado con exito!',
numError: 0,

});
}
});
} else {
console.log("paciente ya registrado");
response.status(400).send({
msjError: 'El paciente ya existe registrado',
numError: 2,

});
}
});
} catch (err) {
console.log("Problemas");
console.log(err);

response.status(500).send({
msjError: 'Error no existen los parametros necesarios para guardar al nuevo paciente',
err
});
}
}

代码 Paciente 是 (module.exports):

module.exports = {
//pacienteSchema: mongoose.model('Paciente', pacienteSchema),
pacienteSchema: mongoose.model('Paciente', pacienteSchema),
pacienteFormEnfermeria: pacienteFormEnfermeria,
pacienteModelFormEnfermeria: pacienteModelFormEnfermeria,
pacienteFormKinesiologia: pacienteFormKinesiologia,
pacienteModelFormKinesiologia: pacienteModelFormKinesiologia,
pacienteModelFormNutricion: pacienteModelFormNutricion,
pacienteFormNutricion: pacienteFormNutricion,
pacienteFormModalRegistro: pacienteFormModalRegistro,
pacienteFormRegistro: pacienteFormRegistro
}

变量pacienteSchema是:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var pacienteSchema = Schema({
Nombre: String,
ApellidoPaterno: String,
ApellidoMaterno: String,
Rut: String,
Edad: Number,
FechaNacimiento: Date,
genero: String,
Nacionalidad: String,
Direccion: String,
Comuna: String,
telefonoContacto: String,
celular: String,
Prevision: String,
patologiaConsulta: String,
creenciasReligiosas: String,
costumbres: String,
etnia: String,
estadoCivil: String,
grupoFamiliar: String,
hijos: String,
redApoyo: String,
escolaridad: String,
ocupacion: String,
horarioLaboral: String,
diasFaltaTrabajo: Number,
accidentesLaborales: String,
riesgosLaborales: String,
practicasDeportivas: String,
hobbies: String,
estadoVivienda: String,
accesoServiciosBasicos: String,
antecedentesFamiliares: String});

最佳答案

它应该是 pacienteSchema.findOne,而不是代表文档(如关系数据库中的一行)的实例化 pacienteEntrada。而 pacienteSchema 表示对文档集合(如关系数据库中的表)的访问。

顺便说一下,Paciente.pacienteSchema 应该被称为 Paciente.pacienteModel (因为它是 mongoose.model 返回的值) >).

pacienteEntrada.save 应该已经可以了,但是你的回调似乎是错误的:我相信它只会用一个(错误)参数来调用,所以你的第二个参数(pacienteSave) 必须是未定义。这会让你的函数发送 404 并且看起来像是失败了。

要么是这些,要么您使用 mongoose.createConnection 而不是 mongoose.connect 连接数据库(在这种情况下,您需要使用返回的连接而不是 直接使用 mongoose - 检查 their docthe warning 有关在单独连接上访问模型的信息)。

关于javascript - Mongoose - FindOne 和 Save 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com