Discord.js开发:JSON存储用户数据未显示ID、赋值报左侧无效错误
Discord机器人用户数据JSON存储问题修复
核心问题梳理
- 执行余额修改代码时,触发「左侧表达式无法进行赋值」的语法报错
- 生成的JSON文件仅存储数值内容,未关联展示对应用户ID的键值信息
赋值报错的根因与修复
userValues 是Discord SDK提供的Collection(本质为Map结构)实例,userValues.get(userid) 是取值方法,返回的是临时读取到的数值,不属于可赋值的内存左值,因此不能直接出现在等号左侧做赋值操作。
原有错误代码片段:
var currentBalance = userValues.get(userid); userValues.get(userid) = currentBalance + coins; userfile1.setLS(userValues);
修正为通过Collection自带的set方法更新对应键的数值:
// 兼容无存储记录的新用户,取默认初始值10 var currentBalance = userValues.get(userid) ?? 10; userValues.set(userid, currentBalance + coins); userfile1.setLS(userValues);
JSON文件无用户ID映射的根因与修复
Discord Collection继承自JS原生Map结构,这类结构在默认JSON序列化流程中,不会被解析为{ 用户ID: 对应数值 }的普通对象格式,直接传入序列化方法时会丢失键名信息,最终生成的文件就只会显示存储的数值。
需要在写入JSON文件前,将Collection的键值对转换为可正常序列化的普通JS对象,再调用存储方法:
// 转换Map/Collection为普通键值对象 const saveData = Object.fromEntries(userValues); userfile.setLS(saveData);
调整完成后,生成的JSON文件就会正常展示「用户ID-对应数值」的完整映射关系。
内容的提问来源于stack exchange,提问作者haroon_tk
相关产品推荐
相关产品推荐

