我想SELECT * FROM ${TABLE_NAME} where id in $keys[]
在运行使用时执行以下查询,ARRAY (JSON)
如文档示例中所示
let statement = `DECLARE $keys ARRAY(JSON); SELECT * FROM ${TABLE_NAME} where id in $keys[]`;
我有以下错误
LHS type: INTEGER RHS type: STRING
如何解决这个问题。有任何想法吗 ?
我想SELECT * FROM ${TABLE_NAME} where id in $keys[]
在运行使用时执行以下查询,ARRAY (JSON)
如文档示例中所示
let statement = `DECLARE $keys ARRAY(JSON); SELECT * FROM ${TABLE_NAME} where id in $keys[]`;
我有以下错误
LHS type: INTEGER RHS type: STRING
如何解决这个问题。有任何想法吗 ?
这意味着您发送的数组元素是字符串而不是整数。您的 ID 列似乎是 INTEGER。
我以为在你的程序中你有类似的东西
preparedStmt.set( '$keys', ["3","4","5","100"]);
所以第一个解决方案是发送一个 INTEGER 数组
preparedStmt.set( '$keys', [3,4,5,100]);
另一种解决方案是更改变量的类型
let statement = `DECLARE $keys ARRAY(INTEGER); SELECT * FROM ${TABLE_NAME} where id in $keys[]`;
但是如果你有非整数值,你将有以下错误
preparedStmt.set( '$keys', ["3","4","5","100","BAD DATA"]);
这里的错误
NoSQLArgumentError: [ILLEGAL_ARGUMENT] Failed to create Field Value for variable '$keys': Invalid string for Integer: BAD DATA
在这种情况下,我建议在客户端级别进行管理
preparedStmt.set( '$keys', [3,4,5,"100","BAD DATA"].map(i=>Number(i)).filter( value => !Number.isNaN(value) ) );