You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js SQLite问题:console.log无法输出查询全部行

解决Node.js SQLite查询仅返回第一行数据的问题

你遇到的这个问题根源很明确:你用的sql.get()方法本身就是专门用来获取单条查询结果的——哪怕你的SQL语句匹配到了多条数据,它也只会返回第一行记录。要拿到表中所有的两行数据,你需要换成sql.all()方法。

具体解决方案

把原来的sql.get()替换为sql.all(),它会返回一个包含所有匹配行的数组,你可以通过遍历数组来获取每一行的userid:

// 替换get为all,获取所有结果行
sql.all(`SELECT * FROM '${message.guild.id}'`).then(rows => {
  // rows是存储所有查询结果的数组
  rows.forEach(row => {
    console.log(row.userid); // 依次输出每一行的userid
  });
}).catch(err => {
  // 别忘了处理可能的错误
  console.error('查询出错:', err);
});

额外建议:避免SQL注入风险

直接把message.guild.id拼接到SQL语句里存在潜在的SQL注入风险(虽然Discord的服务器ID通常是安全的数字,但养成好习惯很重要)。建议使用参数化查询来替代字符串拼接:

sql.all(`SELECT * FROM ?`, [message.guild.id]).then(rows => {
  rows.forEach(row => console.log(row.userid));
}).catch(err => console.error('查询出错:', err));

补充说明

  • sql.get():适合你确定查询结果只有一条的场景,比如根据唯一ID查询单条记录,它会直接返回单个对象。
  • sql.all():适合需要获取多条匹配记录的场景,返回一个包含所有结果对象的数组。

内容的提问来源于stack exchange,提问作者user9614296

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:53:05