如何基于其他字段名mongooseSchema定义slug

如何基于其他字段名mongooseSchema定义slug,mongoose,mongoose-schema,Mongoose,Mongoose Schema,我有猫鼬模式: 字段1:名称: name: { type: String, trim: true, unique: true, required: true, }, 字段2是段塞: slug: { trim: true, type: String, index: true, }, 我有一个函数,用于检查名

我有猫鼬模式:

字段1:名称:

        name: {
        type: String,
        trim: true,
        unique: true,
        required: true,
        
    },
字段2是段塞:

        slug: {     
        trim: true,
        type: String,
        index: true,
    },
  • 我有一个函数,用于检查名称是否使用accept字符进行验证:

     categorySchema.path("name").validate(function (name) {
     const regex = /^[0-9a-zא-ת- ]+$/;
     if (regex.test(name)) {
     return true;
     } else throw new Error("no accept");
     });
    
我想做的是: 我尝试根据我得到的名称定义slug,当然还有一些操作来编写slug(比如替换空格,让slugFromName=name.split(“”)。join(“”;)。 然后将其与正确的内容一起保存到slugField


问题:我不知道如何根据名称字段检查slug并保存它

您可以在有效负载保存到mongoose之前验证它。猫鼬有一个内置的功能

name: {
        type: String,
        trim: true,
        unique: true,
        required: true,
        validate: {
        validator: function (v) {
        return /^[0-9a-zא-ת- ]+$/.test(v);
      },
      message: (props) => `${props.value} is not accept!`
    }
}
在您需要像这样操纵负载之前,例如

var someFunction = (payload) => {
// here your manipulation
}
categorySchema({
name : payload.name,
slug : someFunction
}).save()
.then(docs => {
console.log(docs)
})
.catch(err){
throw err
}


您可以在有效负载保存到mongoose之前对其进行验证。猫鼬有一个内置的功能

name: {
        type: String,
        trim: true,
        unique: true,
        required: true,
        validate: {
        validator: function (v) {
        return /^[0-9a-zא-ת- ]+$/.test(v);
      },
      message: (props) => `${props.value} is not accept!`
    }
}
在您需要像这样操纵负载之前,例如

var someFunction = (payload) => {
// here your manipulation
}
categorySchema({
name : payload.name,
slug : someFunction
}).save()
.then(docs => {
console.log(docs)
})
.catch(err){
throw err
}