Я определил схему User в user.js
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let UserSchema = new Schema({
first_name: { type: String, required: false },
last_name: { type: String, required: false },
email: { type: String, required: true, unique: false },
password: { type: String, required: true },
role: { type: String, required: false },
image: { type: Buffer, required: false },
mfa_enabled: { type: Boolean, required: false },
mfa_secret: { type: String, required: false },
mfa_skip: { type: Boolean, required: false },
user_groups: { type: [String], required: false },
login_attempts: { type: [Number], required: false }
});
module.exports = mongoose.model('User', UserSchema);
У него есть дискриминатор, пациент, определенный в Patient.js:
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let User = require('./user');
let patientSchema = new Schema({
age: { type: String },
verified: { type: Boolean },
overdue_assessment: { type: Date },
dob: { type : Date },
gender: { type : String },
date_registered: { type: Date },
last_assessment_score: { type: Number },
last_assessment_date: { type: Date }
});
module.exports = User.discriminator('Patient', patientSchema);
Я загружаю в модель пациента вконечная точка (Patient.put.js) и попытка обновить пациента.Это работает, как и ожидалось:
let Patient = require('../../models/patient');
Patient.findById(req.tokenData.user_id, function(err, patient) {
patient.last_assessment_date = new Date();
patient.save();
});
Я сейчас пытаюсь запросить мою базовую модель User с помощью проекционного запроса, например, так:
User.find(conditions, { password: false }, options, function(err, objects){
// projection cannot have a mix of inclusion and exclusion.
});
Удаление параметра проекции отменяет ошибку и возвращает обапользователи и пациенты, но я не могу передать конфиденциальные данные на клиентскую сторону ..
User.find(conditions, {}, options, function(err, objects){
//success
});
Кроме того, удаление require в Patient.put.js позволяет избежать этой ошибки проекта, когда я пытаюсь запросить коллекцию пользователей.Что очень странно для меня.
//let Patient = require('../../models/patient');
Patient.findById(req.tokenData.user_id, function(err, patient) {
patient.last_assessment_date = new Date();
patient.save();
});
Я получаю ошибку Мангуста: проекция не может иметь сочетание включения и исключения.Как можно избежать этого, чтобы пользователи и пациенты возвращались из этого запроса, используя проекцию в моем запросе?Почему простая загрузка в Patient через require в несвязанной конечной точке может вызвать эту проблему?