首页 > 解决方案 > 在服务器端函数中将字符串转换为 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 !

我们看到它的方式有两种选择:

  1. 将 ID 转换为 ORecordId 数组
  2. 更改查询,以便将“in()”部分转换为字符串数组

我们无法以任何一种方式做到这一点。

提前谢谢了。

标签: orientdb

解决方案


推荐阅读