我在node.js服务器中有这样的产品schema



export var Product = mongoose.model(
    "product",
    new Schema({
        name: String,
        brand: { type: Schema.Types.ObjectId, ref: "brand" },
        colors: [String],
        sizes: [String],
        description: String,
        thumnbail: String,
        images: [String],
        thumnbnailImage: String,
        price: Number,
        quantity: Number,
        discount: Number,
        category: { type: Schema.Types.ObjectId, ref: "category" },
        createdAt: String,
        updatedAt: String,
        isActive: { type: Boolean, default: true }
    })
);





在此schema中,我引用了brand集合。但是用户不必从客户端提供brand来添加product。现在,当我尝试添加product时,我没有给出brand_id,因为它是可选的,所以node.js会抛出这样的错误

product validation failed: brand: Cast to ObjectID failed for value "" at path "brand"


如何在_id文档中为品牌制作product做一个可选字段,以便如果用户不提供brand_id,这样我的服务器就不会给出这样的错误?

最佳答案

在猫鼬中,通常每个字段都是可选的,除非您指定required:true

从这个错误:


  在路径“品牌”处,值“”的强制转换为ObjectID失败


看来您正在尝试在输入中发送brand:'',这意味着您实际上在文档中有品牌字段,所以您得到了MongooseError,如果确实需要,您需要在此处具有验证功能在某些文档中为空字符串,或者可以在将其发送到db操作之前从输入对象中删除品牌字段(当它不等于ObjectId()时)。

07-28 07:21
查看更多