#node.js #mongodb #mongoose
#node.js #mongodb #mongoose
Вопрос:
Сотрудник покидает приложение. Когда администратор одобрит и менеджер одобрит, я хочу, чтобы статус утверждения был обновлен до утвержденного.
const leaveSchema = mongoose.Schema(
{
user: {
type: mongoose.Schema.ObjectId,
ref: "User",
required: [true, "It must belong to a user"],
},
adminApproval: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
},
managerApproval: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
},
approvalStatus: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
default: "Pending",
},
active: {
type: Boolean,
default: true,
},
},
);
Комментарии:
1. можете ли вы предоставить образец выходных данных или уточнить свой вопрос
2. Что я понял из вашего объяснения, так это то, что если в базе данных одобрены
adminApproval
amp;managerApproval
, тоapprovalStatus
будут одобрены независимо от того, что этоPending
в базе данных?
Ответ №1:
Вы могли бы написать промежуточное программное обеспечение для проверки этого после любого сохранения документа этой модели.
const leaveSchema = mongoose.Schema(
{
user: {
type: mongoose.Schema.ObjectId,
ref: "User",
required: [true, "It must belong to a user"],
},
adminApproval: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
},
managerApproval: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
},
approvalStatus: {
type: String,
enum: ["Pending", "Approved", "Rejected"],
default: "Pending",
},
active: {
type: Boolean,
default: true,
},
});
leaveSchema.post('save', function(doc) {
if (doc.adminApproval === 'Approved' amp;amp; doc.managerApproval === 'Approved' amp;amp; doc.approvalStatus !== 'Approved') {
doc.approvalStatus = 'Approved';
doc.save();
}
};
Комментарии:
1. Спасибо за помощь, сэр… Я сделал это с помощью pre hook или как там это называется, но это сработало. Спасибо, что нашли время помочь мне…