Tôi đã tiếp tục truy cập Google trong một giờ qua và thấy điều gì đó về phạm vi khiến tôi phải suy nghĩ. Đoạn mã sau đã khắc phục sự cố của tôi.
//Doctors.js
var mongoose = require('mongoose');
var schema = mongoose.Schema({
email: { type: String }
}
module.exports = mongoose.model('Doctors', schema);
//Patients.js
//var Doctors = require('./Doctors'); --> delete this line
var mongoose = require('mongoose');
var schema = mongoose.Schema({
email: { type: String },
doctor: { type: String, ref: 'Doctors' }
}
schema.pre('save', function (next, req) {
var Doctors = mongoose.model('Doctors'); //--> add this line
Doctors.findOne({email:req.body.email}, function (err, found) {
if (found) return next();
else return next(new Error({error:"not found"}));
});
});
module.exports = mongoose.model('Patients', schema);
Mặc dù đây là một bản sửa lỗi nhanh chóng, nhưng nó không phải là một bản sửa lỗi rõ ràng (ít nhất là đối với tôi). Vấn đề là phạm vi của các biến.