我在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()
时)。