Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 正在验证mongoose架构中依赖于同一架构的属性B的属性A的maxlength字段_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js 正在验证mongoose架构中依赖于同一架构的属性B的属性A的maxlength字段

Node.js 正在验证mongoose架构中依赖于同一架构的属性B的属性A的maxlength字段,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我正在尝试验证mongoose模式中AccountActivationToken的maxlength字段,它依赖于loginType字段,loginType字段也是同一模式的一部分 我收到一个错误,因为loginType和AccountActivationToken都在同时验证并保存在DB中 我将如何着手做以下工作 架构配置:- `const userSchema = new mongoose.Schema( { loginType: { ...trimReqdMaxlt

我正在尝试验证mongoose模式中AccountActivationToken的maxlength字段,它依赖于loginType字段,loginType字段也是同一模式的一部分

我收到一个错误,因为loginType和AccountActivationToken都在同时验证并保存在DB中

我将如何着手做以下工作

架构配置:-

`const userSchema = new mongoose.Schema(
  {
    loginType: {
      ...trimReqdMaxltSchema,
      maxlength: 6,
      default: "google",
      validate(value) {
        if (!value.match(/(google|email)/g)) {
          throw new Error("INVALID USER LOGIN TYPE PROVIDED. ");
        }
      },
    },
    accountActivationToken: {
      ...uniqueReqdMaxltSchema,
     // FOLLOWING FIELD NEEDS TO BE VALIDATED BASED ON loginType
      maxlength: () => this.loginType === "google" ? 1300 : 300, 
      required: false,
    },
    
  { timestamps: true }
);
此.loginType无效,因为300是始终为maxlength拾取的值

控制器代码段:-

  const userDetails = {
    loginType: "google",
    accountActivationToken: token,
    ...
    
  };
  const userCredDoc = new UserCredModel(userDetails);
  const savedUser = await userCredDoc.save();