Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
120 views
in Technique[技术] by (71.8m points)

javascript - Boolean and Number in Schema (Mongoose)

How to make in one of the values in the schema, 2 data types Boolean and Number?

question from:https://stackoverflow.com/questions/65886401/boolean-and-number-in-schema-mongoose

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think what you are asking is if there is a way to have a single field that can be of type Number or Boolean. If that is the case, you can accomplish this with a Custom SchemaType (See mongoose docs on this topic at https://mongoosejs.com/docs/customschematypes.html). The code would be something like this:

class BoolOrNumber extends mongoose.SchemaType {
  constructor(key, options) {
    super(key, options, 'BoolOrNumber');
  }

  // `cast()` takes a parameter that can be anything. You need to
  // validate the provided `val` and throw a `CastError` if you
  // can't convert it.
  cast(val) {
    let _val = Number(val);
    if (isNaN(_val) && val !== true && val !== false) {
      throw new Error('BoolOrNumber: ' + val + ' must be a number or boolean');
    }
    return _val;
  }
}

// Don't forget to add `BoolOrNumber` to the type registry
mongoose.Schema.Types.BoolOrNumber = BoolOrNumber;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...