我想从查询中使用类似数组的结果,但遇到了麻烦。 我有:
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
中的所有边或者我误解了什么?
答案 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()