Json .使用引用填充()问题
这是我正在尝试的请求:Json .使用引用填充()问题,json,node.js,mongodb,mongoose,Json,Node.js,Mongodb,Mongoose,这是我正在尝试的请求: var mongoose = require('mongoose') mongoose.connect('mongodb://127.0.0.1/DocTest'); var patientsSchema = mongoose.Schema({ //This is the value I wanna populate in the rdvs collection. ssn: String //But I can't see to have it working. }
var mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1/DocTest');
var patientsSchema = mongoose.Schema({
//This is the value I wanna populate in the rdvs collection.
ssn: String
//But I can't see to have it working.
});
var patients = mongoose.model('patients', patientsSchema);
var Max = new patients({
ssn: "okokok"
});
Max.save(function (err) {
if (err) {
console.log(err);
}
else {
console.log('wink')
}
});
var rdvsSchema = mongoose.Schema({
Heure: {
type: Date
},
patient: {
type: mongoose.Schema.Types.ObjectId, ref: 'patients'
}
});
var rdvs = mongoose.model('rdvs', rdvsSchema);
var rdvs1 = new rdvs({
Heure: 14
}
);
rdvs1.save(function (err) {
if (err) {
console.log(err);
}
else {
console.log('wonk')
}
});
我在这里苦苦挣扎,这里的问题是我想将ssn的价值从患者身上添加到我的RDV集合中。猫鼬手术就是这样。在做其他事情之前,您需要等待操作完成。在本例中,第二个查询取决于第一个查询的响应——因此需要嵌套操作
rdvs.findOne().populate('patient').exec(function(err, rdvs){
console.log (rdvs.patient.ssn)
});
旁白:养成正确命名变量的习惯。通常,是单数和大写的,例如
Patient
,是小写的,例如Patient
你有什么错误?谢谢你的回答,我还有一个问题要问。
// setup schemas
var patientSchema = mongoose.Schema({
ssn: String
});
var rdvSchema = mongoose.Schema({
Heure: Number, // changed: you're expecting a number
patient: { type: mongoose.Schema.Types.ObjectId, ref: 'Patient' }
});
var Patient = mongoose.model('Patient', patientSchema);
var Rdv = mongoose.model('Rdv', rdvSchema);
// create a new patient
Patient.create({ ssn: "okokok" }, function (err, patient) {
if (err) {
console.log(err);
return;
}
if (!patient) {
console.log('patient could not be created');
return;
}
// you can only create a RDV once a patient has been created
Rdv.create({ Heure: 14, patient: patient._id }, function (err, rdv) {
if (err) {
console.log(err);
return;
}
if (!rdv) {
console.log('rdv could not be created');
return;
}
// send response
});
});