gpt4 book ai didi

node.js - 如何在 Mongoose 中设置引用文档_id可选?

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:40 27 4
gpt4 key购买 nike

我在 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 }
})
);

在此架构中,我引用了brand集合。但用户无需提供品牌即可从客户端添加产品。现在,当我尝试添加 product 时,我没有提供 brand_id 因为它是可选的,所以 node.js 抛出这样的错误

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

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

最佳答案

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

来自此错误:

Cast to ObjectID failed for value "" at path "brand"

您似乎正在尝试在输入中发送 brand:'' ,这意味着您实际上在文档中有品牌字段,因此您会收到 MongooseError,这里需要有一个验证功能,如果您确实需要在某些文档中使用空字符串,或者您可以在发送之前从输入对象中删除品牌字段(当它不等于ObjectId()时)到数据库操作。

关于node.js - 如何在 Mongoose 中设置引用文档_id可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com