数据库案例

简介: 新增根据ID扣减库存功能,入参为id和stock。校验参数后执行数据库更新,确保库存为非负整数,更新成功返回结果,失败则抛出错误并记录日志。

增加一个根据id,扣减库存的功能。函数入参为:id,stock两个参数
// model/weaponSkinModel.js(新增)
async function updateWeaponSkinStock(id, newStock) {
// 校验
if (!id) throw new Error('ID 不能为空');
if (typeof newStock !== 'number' || newStock < 0) {
throw new Error('库存必须为非负整数');
}

try {
const [result] = await pool.execute(
'UPDATE weapon_skins SET stock = ? WHERE id = ?',
[newStock, id]
);
if (result.affectedRows === 0) {
throw new Error(未找到 ID=${id} 的数据);
}
return {
success: true,
message: 库存更新为 ${newStock},
affectedRows: result.affectedRows
};
} catch (error) {
console.error(❌ 修改 ID=${id} 库存失败:, error.message);
throw error;
}
}

// 更新暴露
module.exports = {
// *
updateWeaponSkinStock // 新增
};

// index.js(新增测试函数)
// 👉 测试:修改库存(对应 updateWeaponSkinStock 功能)
async function testUpdateWeaponSkinStock() {
console.log('===== 开始测试:修改库存 =====');
const testId = 2; // 用实际存在的 ID
const newStock = 15;
try {
await testPoolConnection();
// 执行修改
const result = await weaponSkinModel.updateWeaponSkinStock(testId, newStock);
console.log('修改结果:', result);
} catch (error) {
console.log('修改失败!原因:', error.message);
}
console.log('===== 测试结束:修改库存 =====\n');
}

// 👉 执行当前测试
testUpdateWeaponSkinStock();

相关文章
|
15小时前
盒子模型
`&lt;div&gt;`标签独占一行,宽度默认为父元素宽度,高度由内容决定,可设置宽高;`&lt;span&gt;`标签为行内元素,一行可显示多个,宽高由内容撑开,不可直接设置宽高。
|
15小时前
完成新浪新闻-标题-样式
四张图片展示了网页标题样式的修订。
|
15小时前
新闻-正文-视频
使用`&lt;video&gt;`标签可嵌入视频,支持在线资源、相对路径和绝对路径三种src方式,推荐使用相对路径。添加controls属性显示播放控件,通过width和height设置尺寸。
|
15小时前
|
Serverless
掌握代码拆分复用
在复杂工作场景中,为避免重复代码,需实现代码复用。通过封装常用功能(如日期格式化、数学计算)为独立模块,实现高内聚、低耦合。例如,将求和函数封装至util.js,供多文件调用,提升维护性与开发效率。
|
15小时前
|
数据可视化 数据挖掘
新闻-标题-优化
三张图片展示了数据可视化图表,包括柱状图、折线图与饼图,直观呈现各类数据分布与趋势,助力快速洞察信息,适用于数据分析、报告展示等场景。
|
16小时前
DQL-查找数据-排序查询
排序查询用于对查询结果按指定字段进行升序(asc)或降序(desc)排列,默认为升序。可指定多个排序字段,当第一个字段值相同时,按第二个字段排序,以此类推。语法为:SELECT 字段列表 FROM 表名 [WHERE 条件] ORDER BY 字段 排序方式。
|
15小时前
|
前端开发 数据可视化 数据挖掘
前端引入图片
三张图片展示了数据可视化图表,包括柱状图、折线图与饼图,直观呈现不同数据维度的对比与趋势,适用于数据分析、报告展示等场景,助力快速洞察信息。
|
15小时前
|
前端开发 数据可视化 数据挖掘
前端创建
三张图片展示了数据可视化图表,包括柱状图、折线图与饼图,用于直观呈现数据分析结果,适用于报告、仪表盘等场景,助力信息清晰传达。
|
16小时前
|
前端开发 数据库
掌握异步函数实现
同步调用需阻塞等待结果,性能较差;异步调用通过Promise封装异步操作,结合async/await优雅获取结果。如getUser用Promise模拟延时查询,async函数中await等待完成,避免阻塞,提升效率,错误可捕获处理,代码更简洁流畅。
|
15小时前
|
存储 关系型数据库 MySQL
DDL-数据库
介绍MySQL数据库常用操作命令:查看、创建、删除数据库及切换使用数据库。支持`database`与`schema`互换语法,推荐使用utf8mb4字符集以存储emoji表情,如😌,适用于MySQL 8.0+版本。