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

无法从GridDB容器检索数据,遇恢复类错误请求排查

问题分析与修正方案

你的代码存在多个关键错误,直接导致了Recovery相关错误及数据查询失败:

1. SQL查询的容器名称不匹配

你创建的容器实际名称是neoanalysis,但查询语句中写的是FROM mycontainer,GridDB无法定位到目标容器,触发错误。

2. JavaScript与Python语法混用

代码基于Node.js的griddb-node-api开发,却混入了Python语法:

  • 使用Python风格的#注释(JS需用//或/* */)
  • 调用Python的print()函数(JS对应console.log())
  • 用Python的缩进格式管理代码块(JS依赖大括号{})

3. GridDB Node.js API方法名错误

Node.js版本的GridDB API采用驼峰命名法,你误用了Python API的下划线命名get_container,正确方法名为getContainer。

4. 未处理异步操作

GridDB的Node.js API几乎都是异步操作,直接同步调用fetch()无法正确获取结果,必须用async/await或回调处理异步逻辑。


修正后的代码示例

var griddb = require('griddb-node-api');

const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({
  path: 'out.csv',
  header: [
    {id: "id", title:"id"}, 
    {id: "new_name", title:"new_name"}, 
    {id: "est_diameter_min", title:"est_diameter_min"}, 
    {id: "est_diameter_max", title:"est_diameter_max"}, 
    {id: "relative_velocity", title:"relative_velocity"}, 
    {id: "miss_distance", title:"miss_distance"}, 
    {id: "orbiting_body" , title:"orbiting_body"}, 
    {id: "sentry_object", title:"sentry_object"}, 
    {id: "absolute_magnitude", title:"absolute_magnitude"}
  ]
});

// 封装异步函数处理GridDB操作
async function queryGridDB() {
  const factory = griddb.StoreFactory.getInstance();
  const store = factory.getStore({
      "host": '239.0.0.1',
      "port": 31999,
      "clusterName": "defaultCluster",
      "username": "admin",
      "password": "admin"
  });

  const conInfo = new griddb.ContainerInfo({
      'name': "neoanalysis",
      'columnInfoList': [
        ["name", griddb.Type.STRING],
        ["id", griddb.Type.INTEGER],
        ["new_name", griddb.Type.STRING],
        ["est_diameter_min", griddb.Type.DOUBLE],
        ["est_diameter_max", griddb.Type.DOUBLE],
        ["relative_velocity", griddb.Type.DOUBLE],
        ["miss_distance", griddb.Type.DOUBLE],
        ["absolute_magnitude", griddb.Type.DOUBLE]
      ],
      'type': griddb.ContainerType.COLLECTION, 
      'rowKey': true
  });

  try {
    // 用正确的异步方法获取容器
    const container = await store.getContainer(conInfo);
    // 修正查询语句中的容器名称
    const query = container.query("SELECT * FROM neoanalysis WHERE id = 54016465");
    const resultSet = await query.fetch();

    // 遍历结果集
    while (resultSet.hasNext()) {
      const row = resultSet.next();
      console.log(row);
      // 可选:将结果写入CSV
      await csvWriter.writeRecords([{
        id: row[1],
        new_name: row[2],
        est_diameter_min: row[3],
        est_diameter_max: row[4],
        relative_velocity: row[5],
        miss_distance: row[6],
        absolute_magnitude: row[7]
      }]);
    }
  } catch (err) {
    console.error("Error:", err);
  }
}

// 执行异步查询函数
queryGridDB();

额外检查点

  • 确认GridDB集群状态正常,容器neoanalysis确实存在且包含目标数据
  • 检查网络连通性:确保Node.js客户端能访问GridDB集群的239.0.0.1:31999组播端口
  • 若容器为预先创建,需保证代码中columnInfoList与实际容器的Schema完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:44:53