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

使用Catalyst Node.js SDK时,传递对象数组调用NoSQLItem.from()遇异常

解决Catalyst Node.js SDK批量插入NoSQL表时的"Value provided for values is expected to be a non-empty Array"错误

你遇到的问题是误用了NoSQLItem.from()方法的用法,以下是两种修正方案:

方案一:直接传递普通对象数组(最简方式)

Catalyst的insertItems()方法支持直接接收普通JavaScript对象数组,无需手动转换为NoSQLItem实例:

const { NoSQLItem } = require("zcatalyst-sdk-node/lib/no-sql");
const catalystApp = catalyst.initialize(req);
const nosql = catalystApp.nosql();
const table = await nosql.getTable("orders");

const plainJson = [
  { pkey: 1, skey: 1200 },
  { pkey: 1, skey: 1201 },
  { pkey: 1, skey: 1202 },
];
// 直接将普通对象数组传入insertItems
const plainInsert = await table.insertItems(plainJson);

方案二:逐个转换为NoSQLItem实例(按需使用)

如果需要对单个对象做自定义处理(比如添加元数据),可以遍历数组逐个转换:

const { NoSQLItem } = require("zcatalyst-sdk-node/lib/no-sql");
const catalystApp = catalyst.initialize(req);
const nosql = catalystApp.nosql();
const table = await nosql.getTable("orders");

const plainJson = [
  { pkey: 1, skey: 1200 },
  { pkey: 1, skey: 1201 },
  { pkey: 1, skey: 1202 },
];
// 遍历数组,将每个对象转为NoSQLItem实例
const noSqlItems = plainJson.map(item => NoSQLItem.from(item));
const plainInsert = await table.insertItems(noSqlItems);

错误原因

NoSQLItem.from()是用来转换单个普通JS对象为NoSQLItem实例的方法,你直接传入了整个数组,导致该方法无法正确解析,最终insertItems()接收到的不是合法的实例数组,因此抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:20:01