我是expressJs
和mongoose
(包括MongoDB)的新手。
问题是当我尝试通过findOne()
来寻找患者时,catch错误显示:
model.findOne不起作用。
我从来没有这个错误。 好吧,我的错误代码是:
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});
答案 0 :(得分:1)
应该为pacienteSchema.findOne
,而不是表示文档的实例化pacienteEntrada
(如关系DB中的一行)。 pacienteSchema
代表对文档集合(如关系数据库中的表)的访问。
顺便说一句,Paciente.pacienteSchema
应该被称为Paciente.pacienteModel
之类的东西(因为它是mongoose.model
返回的值)。
pacienteEntrada.save
应该已经可以了,但是您的回调似乎是错误的:我相信它将仅使用一个(错误)参数来调用,因此您的第二个参数(pacienteSave
)必须为{{1} }。这会使您的函数发送404并显示为失败。
或者选择这些,或者您将数据库与undefined
而不是mongoose.createConnection
连接(在这种情况下,您需要直接使用返回的连接而不是mongoose.connect
-检查their doc和the warning有关在单独的连接上访问模型的信息。