React+Mongoose实现商品变体定价时red未定义报错如何解决
问题原因
你的报错属于基础JavaScript语法错误,和Mongoose无关:你在variations.dimensions中写的red、s1没有加引号,JS引擎会将其识别为未声明的变量,因此抛出ReferenceError。
修复方法
根据你的业务需求选择对应写法即可:
- 如果你需要存储规格的唯一标识(和你提前定义的
dimensions.color、dimensions.size下的键名对应),直接给值加英文双引号/单引号即可,注意你定义的size键为s05,要和你写的s1对应上,避免后续匹配不到规格配置:
variations: [ { dimensions: { color: "red", size: "s05" }, SKU: "98765", price: 10, }, ],
- 如果你需要存储规格的展示名称(比如给前端渲染用的
Red、0.5 m),可以直接写对应字符串,也可以提前抽离公共规格配置再引用,避免重复写内容:
// 提前抽离公共规格配置 const colorConfig = { title: "Color", red: { title: "Red", images: [ "http://myserver.com/images/product_12345_3", "http://myserver.com/images/product_12345_4", ], }, } const sizeConfig = { title: "Size", s05: { title: "0.5 m", images: [], }, } // 组装商品数据时直接引用配置 const productData = { dimensions: { color: colorConfig, size: sizeConfig, variations: [ { dimensions: { color: colorConfig.red.title, size: sizeConfig.s05.title }, SKU: "98765", price: 10, }, ], } }
内容的提问来源于stack exchange,提问作者Guillaume Ayad
相关产品推荐
相关产品推荐

