Node.js+Discord.js抽奖系统:向嵌套数组推送数据报错求助
解决Discord.js抽奖系统entries字段push报错的问题
嘿,这个问题我之前也碰到过!你猜得没错,问题就出在entries的类型上——它现在是字符串("[]"),不是真正的JavaScript数组,自然调用不了push方法啦。
具体解决步骤:
- 先把字符串解析成数组:用
JSON.parse()把存储的字符串格式数组转成可操作的JS数组 - 执行push操作添加参与项:这时候数组就可以正常用push了
- 把数组转回字符串保存:如果之后需要把数据存回文件/数据库,得用
JSON.stringify()把数组转成字符串格式,保持数据结构一致
完整代码示例:
// 解析字符串为数组 let entries = JSON.parse(raffles[0].entries); // 添加新的参与用户信息 entries.push({ 'username': 'example', 'user_id': '1' }); // 把更新后的数组转回字符串,替换原字段 raffles[0].entries = JSON.stringify(entries);
额外优化建议:
如果可以的话,建议你初始化数据集的时候,直接把entries设为原生数组[],而不是字符串"[]",这样后续操作就不用反复解析和转换了,比如初始数据集改成:
[{"author":"Name","rafflename":"RAFFLE","amount":"10","entries":[]}]
这样之后直接调用raffles[0].entries.push(...)就不会报错啦!
内容的提问来源于stack exchange,提问作者T3rr11
相关产品推荐
相关产品推荐

