首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在mongoose模式中添加required in对象或对象数组?

在Mongoose中,要在模式(Schema)中的对象或对象数组添加required验证,你需要在定义模式时指定这些字段为必需的。下面是如何在对象和对象数组中添加required验证的示例。

对象中的required字段

假设你有一个用户模式,其中包含一个地址对象,你希望确保streetcity字段是必需的。

代码语言:txt
复制
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const addressSchema = new Schema({
  street: {
    type: String,
    required: true
  },
  city: {
    type: String,
    required: true
  },
  // 其他地址字段...
});

const userSchema = new Schema({
  name: String,
  address: addressSchema,
  // 其他用户字段...
});

const User = mongoose.model('User', userSchema);

在上面的例子中,address对象内的streetcity字段都被设置为必需的。

对象数组中的required字段

如果你有一个对象数组,并且想要确保数组中每个对象都有某个必需的字段,你可以这样做:

代码语言:txt
复制
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const itemSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  quantity: {
    type: Number,
    required: true
  }
  // 其他商品字段...
});

const orderSchema = new Schema({
  items: [itemSchema],
  // 其他订单字段...
});

const Order = mongoose.model('Order', orderSchema);

在这个例子中,orderSchema中的items数组里的每个对象都必须包含namequantity字段,这两个字段都被设置为必需的。

解决遇到的问题

如果你在尝试添加required字段时遇到问题,比如验证没有按预期工作,可能是以下几个原因:

  1. 拼写错误:确保你在模式定义中正确拼写了required关键字。
  2. 顺序问题:在Mongoose中,验证器是在模式定义之后应用的。如果你在定义模式之后修改了模式,可能需要重新编译模型。
  3. 嵌套模式:如果你在嵌套模式中使用required,确保你已经正确定义了嵌套模式,并且在需要的地方应用了required
  4. 更新模式:如果你在现有模式上添加required字段,可能需要使用mongoose.Schema.Types.Mixed或者重新定义整个模式。

参考链接

如果你遵循了上述步骤还是遇到问题,可以提供具体的错误信息或代码示例,以便进一步诊断问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券