orientdb - 在服务器端函数中将字符串转换为 ORecordId
问题描述
我们正在为一个 POC 项目试验 OrientDB。我们想实现一个简单的搜索服务器端功能。
计划是接收一个字符串数组作为输入参数,将其传递给查询并返回结果(防止sql注入)
这是我们的服务器端函数的片段
var ids = (idsInput) ? JSON.parse(idsInput) : null; // ids will be an array of string like ["#75:0"]
var g = orient.getDatabase();
var sql = "select * from Article where in() CONTAINS ?";
return g.query(sql, ids);
主要思想是获取所有(不是任何)提供的 id(在参数中)的链接的文档(文章类型)。
问题是 CONTAINS 不适用于字符串数组。
select * from Article where in() CONTAINS [#75:0] // works
select * from Article where in() CONTAINS ["#75:0"] // dose not work !
我们看到它的方式有两种选择:
- 将 ID 转换为 ORecordId 数组
- 更改查询,以便将“in()”部分转换为字符串数组
我们无法以任何一种方式做到这一点。
提前谢谢了。
解决方案
推荐阅读
- javascript - React onChange 处理状态对象
- macos - 为什么除非我删除以前的可执行文件,否则使用 x86_64 构建系统构建的本机 arm64 应用程序无法进行代码签名?
- xml - 如何将纯空白元素读入 QDomDocument?
- node.js - 如何使用 Axios 测试 HTTP Only Cookie Set
- python-3.x - Python ThreadPoolExecutor 不运行最大
- java - bndtools 是 OSGI 捆绑包的未来捆绑工具吗?
- jhipster - 由于 UnsatisfiedDependencyException,带有 Okta 应用程序的 JHipster 无法启动
- c# - Ef core 为名称 *ID1 的导航属性创建附加列
- sql-server - 如何使用 OPENROWSET 在 SELECT 语句中选择动态列
- java - Spring 我怎样才能只取给定的两个参数之一?