如何在另一个查询中使用orientjs查询的数组结果 - 数组不是"数组"

时间:2016-02-11 17:33:51

标签: orientdb orientjs

我想从查询中使用类似数组的结果,但遇到了麻烦。 我有:

class case extends V
class doc extends V
class filedIn extends E

因此,一个文件通过类的边缘提交到类中。

我的第一个查询拉出一个顶点:

.select().from('case').one().then(function(result){...

然后我想选择链接到任何这些案例顶点的所有filedIn边缘,但是如何?

JSON.stringify(result)
  

{" @类型":" d"" @类":"物""标题" :"我的案例"," in_filedIn":["#17:7","#17:8","# 17:9&#34]," @ RID":"#12:3"" @版本":12}

看起来像结果[' in_filedIn']是一个数组,

但是

.select().from(result['in_filedIn']).all()

从数据库中找到我的错误:

  

在位置#0解析命令时出错:解析查询时出错:\ nSELECT * FROM [object Object] \ nEnncountered \

select().from('[#17:7,#17:8,#17:9]')

(硬编码)有效。

.select.from("[" + ["#17:1","#17:2].join(',') + "]").all()

也有效。

但是

select.from("[" + result['in_filedIn'].join(,)+"]").all()

抛出

  

result.in_filedIn.join不是函数

即。无论它是什么类型的对象,它都不是从Array原型继承的。

console.log(result['in_filedIn'])

产生

  

Bag {    序列化产品:>'&AQAAAAUAEQAAAAAAAAAHABEAAAAAAAAACAARAAAAAAAAAAkAEQAAAAAAAAAKABEAAAAAAAAADwAAAAA GT; AAAAAAAAAAAAAAAAAAAAAAAAAA   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&#39 ;,    uuid:null,    _内容:     [{[String:'#17:7'] cluster:17,position:7},   ...

所以我很困惑该怎么做。

我想选择其中@rid列在result.in_filedIn

中的所有边

或者我误解了什么?

3 个答案:

答案 0 :(得分:4)

嗨oliver in_filedIn不是一个数组是一个名为RidBag的结构,在Orientjs中实现是在Bag.js中完成的。 如果你想要获得阵列,你应该做

result['in_filedIn'].all()

获取数组。

答案 1 :(得分:0)

以下工作虽然有点脏。

.from(JSON.stringify(result['in_filedIn']).replace(/"/g,""))

我还在寻找更好的答案!

答案 2 :(得分:0)

我实际上遇到了类似的问题。当您实例化数据库连接时,他们没有在名为enableRIDBags的文档中列出配置字段。 所以你的配置看起来像: { host: 'localhost', port: 2424, username: 'blah', password: 'blooh', enableRIDBags: false } 我发现最好只禁用RIDBags,因为它们在节点中有点挑剔。上面列出的.all()技巧对我来说很好,直到我的顶点有超过40个边缘,因为它们都被转换为SBTree包而不是嵌入式包。如果您检查第122行here,当您拨打.all()

时,您会看到他们无法将树转换为JSON