Mongoose:“保存”类型的参数不可分配给“RegExp”类型的参数|“insertMany”'

vlurs2pr  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(113)

我正在用mongoose做用户模型。创建了一些接口来使用模型方法和静态数据,就像在documentation中一样。

export interface IUser extends Document {
  email: string;
  password: string;
  role: 'user' | 'admin';
  firstname: string;
  lastname: string;
  age: number;
  date: Date;
  verified: boolean;
}
interface IUserMethods { // no methods now, interface for future 

}
interface UserModel extends Model<IUser, {}, IUserMethods> {
    emailTaken(email: string): Promise<HydratedDocument<IUser, IUserMethods>>;
}

字符串
然后使用所有接口创建模式

const userSchema = new Schema<IUser, UserModel, IUserMethods>({...});


然后我尝试使用pre-save hook来散列密码,我得到了这个错误:
1x个月

userSchema.pre('save', async function (next: NextFunction) {
    const user = this;
  
    if (user.isModified('password')) {
      const salt = await bcrypt.genSalt(10);
      const hash = await bcrypt.hash(user.password, salt);
    }
  
    next();
  });


我试过.pre<IUser>.pre<HydratedDocument<IUser>>.pre<HydratedDocument<IUser, IUserMethods>>,但没有一个工作。

ryevplcw

ryevplcw1#

Try Like This为我工作

import { CallbackWithoutResultAndOptionalError } from "mongoose";

userSchema.pre("save", function (next: CallbackWithoutResultAndOptionalError) {
    .............rest code ............
    next();
});

字符串

这是Monoose的正确Next FunctionType,您一直使用的是Express Next Function Type

请试着让我知道它是否有效
谢谢

相关问题