当前位置: 首页 > article >正文

uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)

后台增加商品,需要添加相关的数据信息,这里还要添加属性,前面已经对相关的界面布局继续了编写。这里还要对页面添加的数据,置入到云数据库,继续永久保存,便于后期的使用。这里主要是讲属性数据 父级信息的添加,后面再继续子级数据添加。(父级就是颜色,子级就是红,绿等)

1、概述

本文介绍了在后台系统中添加商品属性(父级信息)并存储到云数据库的过程。首先,回顾了界面布局和属性显示的嵌套结构。接着,详细说明了如何通过云对象处理商品属性数据,包括建立数据库模式(db schema)和创建云对象以定义数据库操作。文章还描述了页面逻辑的实现,如通过云对象获取和添加数据,以及如何处理父级和子级属性的添加。最后,介绍了如何通过弹窗交互实现属性的动态添加,并将新数据即时更新到页面和数据库中,确保数据的永久保存和后续使用。

2、界面情况回顾

属性显示其实是个一嵌套的数据显示。

3、需要添加的商品属性(父级)

这里涉及一个sku,就一个库存量单位,商品的库存量。包含商品信息、规格、数量、价格等等。

从前面商家信息 52 章节看出,我们还是要使用云对象,云对象是一种通用的处理方式。

3.1 第一步,建立db  schema文件(常用方式,最好这样处理)

这样后期移植代码就比较方便,直接上传 db schema 就可以创建数据库了

注:但是在云对象使用中,你不创建db schema 也可以,云对象会自己创建数据库

内容默认就好:不用修改

// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{"bsonType": "object","required": [],"permission": {"read": false,"create": false,"update": false,"delete": false},"properties": {"_id": {"description": "ID,系统自动生成"}}
}

3.2 第二步,创建云对象

主要是定义 db 定义dbcmd等等

使用方法,还是预处理获取前台传来的值,this.getParams()[0]

然后定义 get add update等等,另外也要注意,我们前端页面传来的数据中,选中的标识是true。

这是为了在我们添加当前商品时是选中的

但是在后台数据应该是默认不选中,便于下一个商品添加时,看到的是干净的,可选的。不然一上来就都是选中的,也很搞笑。  慢慢悟一下。

里面注意写法和格式:

const db = uniCloud.database();
const cmd = db.command
module.exports = {_before: function () { // 通用预处理器this.params = this.getParams()[0]},async get(){return await db.collection("green-mall-sku").get()},async add(){this.params.checked = false;return await db.collection("green-mall-sku").add(this.params)},async updateChild(id,obj){obj.checked=falsereturn await db.collection("green-mall-sku").doc(id).update({			children:cmd.push([obj])})}
}

3.3 页面的使用

3.3.1 页面使用需要先引入:

    const skuCloudObj = uniCloud.importObject("green-mall-sku", {
        "customUI": true
    });

这里写了一个  "customUI": true   表示不用提示 加载,但一般保持为默认,不用添加这一项,保持有提示的情况更加人性化。

3.3.2 页面逻辑,前面定义了skuArr的数据,这里我们就不用固定死了,直接通过云对象添加,传到数库,以后使用就可以调用数据库的数据了。

所以就讲固定的删除,直接定义一个空 skuArr

				/*skuArr: [{_id:1,skuName:"颜色",checked:false,children:[{name:"红",checked:false},{name:"蓝",checked:false}]},{_id:2,skuName:"规格",checked:false,children:[{name:"M",checked:false},{name:"S",checked:false}]}],*/// 上面是一个数据结构例子,后台数据就应该着这样存// 实际是下面的[]skuArr: [],

3.3.3 点击选择属性,弹出选择属性的窗口

继续页面数据的获取,并使用云对象中的get 方法

			//点击选择属性clickSelect() {this.$refs.attrWrapPop.open(); //使用open方法弹出来if (this.skuArr.length) return;this.getSkuData();
			//获取sku列表async getSkuData() {let res = await skuCloudObj.get();this.skuArr = res.dataconsole.log(res);},

3.3.4 添加属性(父级)

两个函数,一个点击添加的方法,一个是点击后的弹窗处理。

如果有index 就是子级点击添加,且定义个子级child 属性;如果没有index 就是父级添加,第一个父级属性 parent 实现的是一个函数两个功能使用

针对弹窗,就是弹出一个添加值的对话窗口  请输入新增内容    使用的 addAttrPop 弹窗  ,该弹窗的动作就是  dialogConfirm   唯一的差异就是带的属性值不一样。

如果  dialogConfirm   中的没有获取到值 e,那么就不会再继续执行下面的操作。

是父级就添加到数据库中,调用add ,

然后还要将刚刚添加的值更新到本地的data 中定义的skuArr数组,用于页面立即回显。

是子级就更新对应id 的子级 数据。然后将刚刚添加的数据,传入到 skuArr 对应id的数组中。用于页面立即回显。

另外这里的 id 我也回填到 skuArr中,便于这里添加父级下的子级,不然你添加子级你都不知道往哪里添加。

			//点击添加属性 index 存在就是嵌套下 父类属性的子类选项 ,不存在就是添加父类属性clickAddAttr(index = null) {if (index == null) {this.addAttrType = "parent"this.attrIndex = null} else {this.addAttrType = "child"this.attrIndex = index}this.$refs.addAttrPop.open();},//添加属性弹窗的确认按钮async dialogConfirm(e) {if (!e) return;if (this.addAttrType == "parent") {let obj = {skuName: e,checked: true,children: []}let res = await skuCloudObj.add(obj)obj._id = res.id;this.skuArr.push(obj)//向数组中添加一个元素,就弹窗的确认按钮} else if (this.addAttrType == "child") {let obj = {name: e,checked: true}let id = this.skuArr[this.attrIndex]._id;let res = await skuCloudObj.updateChild(id, obj)this.skuArr[this.attrIndex].children.push(obj)}},

相关文章:

uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)

后台增加商品,需要添加相关的数据信息,这里还要添加属性,前面已经对相关的界面布局继续了编写。这里还要对页面添加的数据,置入到云数据库,继续永久保存,便于后期的使用。这里主要是讲属性数据 父级信息的添…...

摩方 12 代 N200 迷你主机(Ubuntu 系统)WiFi 抓包环境配置教程

摩方12代N200迷你主机标配 Intel AX201无线网卡,支持 WiFi 6 协议(802.11ax)及蓝牙5.2。此网卡兼容主流抓包工具,但需注意: 驱动兼容性:Ubuntu 20.04及以上内核版本(5.4)默认支持AX2…...

matlab多智能体网络一致性研究

一个基于连续时间多智能体系统(Multi-Agent Systems, MAS)的一阶一致性协议的MATLAB仿真代码,包含网络拓扑建模、一致性协议设计和收敛性分析。代码支持固定拓扑和时变拓扑,适用于学术研究。 1. 基础模型与代码框架 (1) 网络拓扑…...

Unity(URP渲染管线)的后处理、动画制作、虚拟相机(Virtual Camera)

一、URP渲染管线 渲染管线是一系列渲染操作的集合,Unity提供了内置渲染管线(Built-In)和可编程渲染管线(SRP)两类渲染管线。内置渲染管线是Unity的默认渲染管线,其自定义选项有限。而可编程渲染管线可以通…...

C语言:在 Win 10 上,gcc 如何编译 gtk 应用程序

在 Windows 10 上使用 g(或 gcc)编译基于 GTK 的 C 语言程序是完全可行的,且相比 Tcc 更为推荐,因为 g(GNU 编译器套件)对 GTK 的支持更加完善,配置也更简单。以下是详细步骤和注意事项&#xf…...

阿里云CMH镜像迁移与SMC整机迁移对比及功能详解(同地域跨主体账号场景)

文章目录 一、核心功能对比​二、CMH镜像迁移操作流程​​1.资源调研​​​​​​2.镜像共享​​​​3.​​迁移验证​​​​4.限制​​: 三、SMC整机迁移操作流程​​1.​​迁移源导入​​​​2.​​任务配置​​​​3.​​增量同步​​​​4.​​应用验证​​​​…...

用vue和go实现登录加密

前端使用CryptoJS默认加密方法: var pass CryptoJS.AES.encrypt(formData.password, key.value).toString()使用 CryptoJS.AES.encrypt() 时不指定加密模式和参数时,CryptoJS 默认会执行以下操作 var encrypted CryptoJS.AES.encrypt("明文&quo…...

政府数据开放试点企业如何抢占特许经营协议黄金席位

首席数据官高鹏律师团队 《中共中央办公厅 国务院办公厅关于 加快公共数据资源开发利用的意见》的落地,标志着数据从“封闭管理的行政资源”正式转变为“可流通的市场要素”。但机遇与风险从来是一枚硬币的两面——特许经营协议的黄金席位背后,隐藏着…...

CSS 锚点滑动效果的技术

CSS 锚点滑动效果的技术 引言 介绍锚点滑动效果的概念及其在网页设计中的重要性。简要说明 基本锚点链接 如何使用HTML中的<a>标签创建基本的锚点链接。示例代码&#xff1a; <a href"#section1">跳转到第一部分</a> <div id"section…...

mac-M系列芯片安装软件报错:***已损坏,无法打开。推出磁盘问题

因为你安装的软件在Intel 或arm芯片的mac上没有签名导致。 首先打开任何来源操作 在系统设置中配置&#xff0c;如下图&#xff1a; 2. 然后打开终端&#xff0c;输入&#xff1a; sudo spctl --master-disable然后输入电脑锁屏密码 打开了任何来源&#xff0c;还遇到已损坏…...

Echart地图数据源获取

DataV.GeoAtlas地理小工具系列 选择需要的区域地图,选中后输出即可: 地图钻取代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>map</title><style>html, body, #map{margin: 0;…...

GNSS数据自动化下载系统的设计与实现

摘要 本文详细介绍了三种不同设计的GNSS数据自动化下载系统&#xff0c;分别针对IGS观测数据、GRACE-FO Level-1B数据以及通过代理服务器获取数据的需求场景。系统采用Python实现&#xff0c;具备断点续传、完整性校验、异常处理和进度显示等核心功能。实验结果表明&#xff0…...

MySQL 中 JOIN 和子查询的区别与使用场景

目录 一、JOIN:表连接1.1 INNER JOIN:内连接1.2 LEFT JOIN:左连接1.3 RIGHT JOIN:右连接1.4 FULL JOIN:全连接二、子查询:嵌套查询2.1 WHERE 子句中的子查询2.2 FROM 子句中的子查询2.3 SELECT 子句中的子查询三、JOIN 和子查询的区别3.1 功能差异3.2 性能差异3.3 使用场…...

【深度学习-Day 12】从零认识神经网络:感知器原理、实现与局限性深度剖析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

谈谈未来iOS越狱或巨魔是否会消失

2024年10月的预测&#xff0c;先说结论&#xff1a; 巨魔iOS17.1消失概率为99%。 因为巨魔强依赖的漏洞就是一个签名漏洞&#xff0c;攻击面有限又经过2轮修复&#xff0c;第3次出现漏洞的概率极低。而越狱的话由于系统组件和服务较多&#xff0c;所以出现漏洞概率高攻击面多&…...

Unity3D仿星露谷物语开发43之农作物生长

1、目标 把防风草种子种在地里&#xff0c;并展示植物种子&#xff0c;防风草种子将随着时间变化而生长成植株。 2、创建Crop.cs脚本 在Assets -> Scripts下创建新的目录命名为Crop&#xff0c;在其下创建新的脚本命名为Crop.cs。 代码如下&#xff1a; using System.C…...

从0到1上手Kafka:开启分布式消息处理之旅

目录 一、Kafka 是什么 二、Kafka 的基础概念 2.1 核心术语解读 2.2 工作模式剖析 三、Kafka 的应用场景 四、Kafka 与其他消息队列的比较 五、Kafka 的安装与配置 5.1 环境准备 5.2 安装步骤 5.3 常见问题及解决 六、Kafka 的基本操作 6.1 命令行工具使用 6.1.1 …...

GTS-400 系列运动控制器板卡介绍(三十四)---运动程序多线程累加求和

运动控制器函数库的使用 运动控制器驱动程序、dll 文件、例程、Demo 等相关文件请通过固高科技官网下载,网 址为:www.googoltech.com.cn/pro_view-3.html 1 Windows 系统下动态链接库的使用 在 Windows 系统下使用运动控制器,首先要安装驱动程序。在安装前需要提前下载运动…...

Python爬虫如何应对网站的反爬加密策略?

在当今的互联网环境中&#xff0c;网络爬虫已经成为数据采集的重要工具之一。然而&#xff0c;随着网站安全意识的不断提高&#xff0c;反爬虫技术也越来越复杂&#xff0c;尤其是数据加密策略的广泛应用&#xff0c;给爬虫开发者带来了巨大的挑战。本文将详细介绍Python爬虫如…...

第一次经历项目上线

这几天没写csdn&#xff0c;因为忙着项目上线的问题&#xff0c;我这阶段改了非常多的前端bug哈哈哈哈&#xff0c;说几个比较好的bug思想&#xff01; 这个页面算是我遇到的比较大的bug&#xff0c;因为我一开始的逻辑都写好了&#xff0c;询价就是在点击快递公司弹出弹框的时…...

Conda配置完全指南——Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南

本文同步发布在个人博客&#xff1a; Conda配置完全指南Conda 是一个开源的跨平台包管理与环境管理工具&#xff0c;广泛应用于数据科学、机器学习及 Python 开发领域。它不仅能帮助用户快速安装、更新和卸载第三方库&#xff0c;还能创建相互隔离的虚拟环境&#xff0c;解决不…...

Quasar组件 Carousel走马灯

通过对比两个q-carousel组件来&#xff0c;了解该组件的属性 官方文档请参阅&#xff1a;Carousel 预览 源代码 <template><div class"q-pa-md"><div class"q-gutter-md"><q-carouselv-model"slide"transition-prev&quo…...

AI日报 - 2024年5月17日

&#x1f31f; 今日概览 (60秒速览) ▎&#x1f916; 大模型前沿 | OpenAI推出自主编码代理Codex&#xff1b;Google DeepMind发布Gemini驱动的编码代理AlphaEvolve&#xff0c;能设计先进算法&#xff1b;Meta旗舰AI模型Llama 4 Behemoth发布推迟。 Codex能并行处理多任务&…...

R语言数据框(datafram)数据的构建及简单分析

代码完成的功能&#xff1a; 创建数据集&#xff08;数据框&#xff09;&#xff0c; 写入到文件中&#xff0c; 显示数据&#xff0c; 分组计算平均年龄&#xff0c; 在Rstudio中&#xff0c;创建R markdown或R notebook文件运行。以下是添加了注释的完整R代码&#xff0…...

风控域——风控决策引擎系统设计

摘要 本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具&#xff0c;可自动化、数据驱动地辅助或替代人工决策&#xff0c;广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能&#xff0c;包括自动化决策、动态规则管理、实时处…...

CAPL Class: TcpSocket (此类用于实现 TCP 网络通信 )

目录 Class: TcpSocketacceptopenclosebindconnectgetLastSocketErrorgetLastSocketErrorAsStringlistenreceivesendsetSocketOptionshutdown函数调用的基本流程服务器端的基本流程客户端的基本流程Class: TcpSocket学习笔记。来自CANoe帮助文档。 Class: TcpSocket accept /…...

数据分析 —— 数据预处理

一、什么是数据预处理 数据预处理&#xff08;Data Preprocessing&#xff09;是数据分析和机器学习中至关重要的步骤&#xff0c;旨在将原始数据转换为更高质量、更适合分析或建模的形式。由于真实世界的数据通常存在不完整、不一致、噪声或冗余等问题&#xff0c;预处理可以…...

软件架构风格系列(4):事件驱动架构

文章目录 前言一、从“用户下单”场景看懂事件驱动核心概念&#xff08;一&#xff09;什么是事件驱动架构&#xff1f;&#xff08;二&#xff09;核心优势&#xff1a;解耦与异步的双重魔法 二、架构设计图&#xff1a;三要素构建事件流转闭环三、Java实战&#xff1a;从简单…...

windows系统各版本下载

以下各版本Windows系统链接来自网友整理&#xff0c;请通过迅雷或者其他支持ED2K或BT的下载工具进行下载。 注&#xff1a;以下为原版系统&#xff0c;未激活、非破解版&#xff0c;仅供下载体验学习&#xff0c;请勿从事商业活动。 Windows 11 Windows 11 (consumer editions…...

arduino平台读取鼠标光电传感器

鼠标坏掉了&#xff0c;大抵是修不好了。&#xff08;全剧终—&#xff09; 但是爱动手的小明不会浪费这个鼠标&#xff0c;确认外观没有明显烧毁痕迹后&#xff0c;尝试从电路板上利用光电传感器进行位移的测量&#xff0c;光电传感器&#xff08;型号&#xff1a;FCT3065&am…...