具有不同变体架构的产品
Posted
技术标签:
【中文标题】具有不同变体架构的产品【英文标题】:Products with different variants schema 【发布时间】:2018-12-24 00:35:04 【问题描述】:我正在尝试使用 MongoDB 创建一个电子商务网站。我创建了一个产品和变体模型,我的问题是如何搜索具有变体的产品,例如对于“尺寸”,用户可以将变体值添加为“S”或“小”。在这种情况下,我如何搜索具有例如小产品的产品,因为产品有很多变体,我如何列出例如。所有小尺寸的产品。这是我的变体模型。
var variantSchema = Schema(
name:
type: String,
required: true,
unique: true
,
count: type: Number, default : 0
);
我的产品架构是:
var productSchema = Schema(
sku:
type: String,
lowercase: true
, //, required: true, unique: true
name:
type: String,
lowercase: true,
max: 65,
required: true
,
slug:
type: String,
lowercase: true,
unique: true,
index: true,
slug: "name",
slug_padding_size: 3
,
status: Boolean,
listPrice: Number,
description:
short:
type: String,
trim: true,
lowercase: true
,
long:
type: String,
trim: true,
lowercase: true
,
images: [],
categoryId:
type: Schema.Types.ObjectId,
ref: 'Category'
,
userId:
type: Schema.Types.ObjectId,
ref: 'User',
required: true
,
createdAt:
type: Date,
default: Date.now
,
updatedAt:
type: Date,
default: Date.now
,
isActive: Boolean,
vars: [
varId :
type: Schema.Types.ObjectId,
ref: 'Variants'
,
values: [
value : String,
image:[]
]
]
);
【问题讨论】:
你能在这里转储一些数据吗?一个来自 Product 一个来自 Variant? @HardikShah varianSchema 仅包含名称,例如:尺寸、颜色等,并且在产品变量中包含变量 ID 和值,例如:varId:123 和值是用户添加的任何内容,他可以输入“S”或“小的”。我的问题是我怎么知道“S”和“Small”是一样的。提前致谢 【参考方案1】:根据您的评论。
您可以通过忽略大小写来区分“小”和“小”。
UserModel.findOne(
email: '$regex': "^"+ email +"$", $options:'i'
, function (err, data)
callback(err, data)
);
但您不能将S
与Small
匹配。
方法一:
您需要将可能的单词保留为Small
。也许通过在 Variant Schema 中插入一个数组 ["S", "Small"]
像这样。但在这种情况下。您必须注意S
。 S
可以是任何东西。 (我不推荐这种方法)
方法2:
我想建议制作一个可以显示大小的架构 (SizeSchema
)。例如Small, Large, Extra small, Extra Large etc...
并将 SizeSchema
引用到 VariantSchema
和 ProductSchema
到 VariantSchema
。 (三重关系)。这将为最终用户修复。没有人会拥有像“S”这样的选项。
希望对您有所帮助。
【讨论】:
以上是关于具有不同变体架构的产品的主要内容,如果未能解决你的问题,请参考以下文章