Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
Mongoose allow a key to exist only if another is set to a certain value

I have a collection which describes requests. It looks like this:

const requestSchema = mongoose.Schema({
  status: {
    type: String,
    required: true,
    enum: ["available", "failed", "succeed"],
  },
  errorCode: { type: String , required : (when status is failed)},
});

My goal is to require errorCode only if status is set to 'failed' and don't allow it to exist otherwise. And if possible to have it removed when status is changed to 'succeed' for example. I can't quite find an answer anywhere.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You could pass a function to required to make errorCode required only if status is equal to "failed", like so:

const requestSchema = mongoose.Schema({
  status: {
    type: String,
    required: true,
    enum: ["available", "failed", "succeed"],
  },
  errorCode: {
    type: String,
    required: function () {
      return this.status === "failed";
    },
  },
});

To remove it when status changes to "succeed", or to any other value than "failed", you can use pre method, like so:

requestSchema.pre("save", async function (next) {
  if (this.status !== "failed") { // change it as you want
    this.errorCode = "";
  }
  next();
});
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!