You need to enable JavaScript to run this app. Discord.js开发:JSON存储用户数据未显示ID、赋值报左侧无效错误
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 06:54:03