具有不同变体架构的产品

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)
);

但您不能将SSmall 匹配。

方法一:

您需要将可能的单词保留为Small。也许通过在 Variant Schema 中插入一个数组 ["S", "Small"] 像这样。但在这种情况下。您必须注意SS 可以是任何东西。 (我不推荐这种方法)

方法2:

我想建议制作一个可以显示大小的架构 (SizeSchema)。例如Small, Large, Extra small, Extra Large etc... 并将 SizeSchema 引用到 VariantSchemaProductSchemaVariantSchema。 (三重关系)。这将为最终用户修复。没有人会拥有像“S”这样的选项。

希望对您有所帮助。

【讨论】:

以上是关于具有不同变体架构的产品的主要内容,如果未能解决你的问题,请参考以下文章

将产品/可下载选项添加到单个产品变体

将具有不同架构的多个 Excel 文件加载到 SQL Server

Anylogic:如何生产各种产品?

PHP+MySQL 中的前端产品变体?

具有按父项分组的变体的产品

以编程方式创建具有新属性值的 WooCommerce 产品变体