【问题标题】:How do I allow only certain entries in a Mongoose model field?如何在 Mongoose 模型字段中只允许某些条目?
【发布时间】:2020-10-03 15:08:14
【问题描述】:

我正在尝试创建一个包含不同企业的猫鼬数据库,每个企业都有一个名称和特定的标签。我使用字符串数组存储标签,但是,我只想允许包含在我制作的“常量”文件(名为 Tags.js)中的标签。有没有一种方法可以在每个业务的 express.js 发布请求中验证标签条目是否包含在常量中?我想确保未包含在常量文件中的标签不能发布到标签数组中。查看 mongoose 文档,看起来 put 方法可能是我可以做到这一点的一种方式,但我不确定。

业务架构

const businessSchema = new Schema({
  businessName = {type: String, required, true},
  tags = [{type:String]
});

标签常量

export const DELIVERY = "DELIVERY"
export const SUBSCRIPTION = "SUBSCRIPTION"
export const VARIETY = "VARIETY"
export const BLACK_OWNED = "BLACK_OWNED"
export const FEMALE_OWNED = "FEMALE_OWNED"
export const CURBSIDE = "CURBSIDE"
export const EVENT = "EVENT"
export const ORGANIC = "ORGANIC"

我目前的商业邮政路线

router.route('/').post((req, res) => {
let newBusiness = new Business({
    ...req.body
  })

  newBusiness.validate(function(err) {
      if (err) {
          res.status(400).json({
              success: false,
              err
          })
      } else {
          newBusiness.save().then(()=>res.status(200).json({
              success: true
          }));
      }
  });

})

【问题讨论】:

    标签: express mongoose mern


    【解决方案1】:

    在猫鼬中,当你定义你的shema时,你可以使用enum验证器。

    它创建一个验证器来检查字符串字段的值是否在给定的数组中。

    const businessSchema = new Schema({
      businessName = {type: String, required, true},
      tags = [{
        type:String,
        enum: ["DELIVERY", "SUBSCRIPTION", "VARIETY", "BLACK_OWNED", "FEMALE_OWNED", "CURBSIDE", "EVENT", "ORGANIC"] 
      }]
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多