如何使用orientjs查询构建器插入具有链接类型属性的顶点?

时间:2015-07-23 13:41:35

标签: orientdb oriento

我正在尝试使用orientjs(以前的oriento)查询构建器插入顶点。我的类有一个指向另一个类的链接类型属性。

我知道我可以使用原始查询字符串,但我很乐意使用查询构建器。

这是我到目前为止所尝试的内容:

db.insert()
.into('VertexClassName')
.set({"prop":"value", "linkProperty":"33:1289287"})

db.insert()
.into('VertexClassName')
.set({"prop":"value", "linkProperty":"#33:1289287"})

我收到以下错误:

Error on saving record in cluster #13

我是否以正确的方式设置属性? 这个错误可能与其他人有关吗? 我已成功在集群#13中运行了一个插入查询,并在工作室中使用原始查询字符串...

3 个答案:

答案 0 :(得分:0)

根据官方文档,似乎问题可能在你的陈述结束时

db.insert().into('VertexClassName')
    .set({"prop":"value", "linkProperty":"33:1289287"}).one()
    .then(function (data) {
       // callback
});

检查您的代码是否有效将一()添加到管道

已编辑:我在orientjs中找到了这个方法。

db.create('VERTEX', 'V')
.set({
  key: 'value',
  foo: 'bar'
})
.one()
.then(function (vertex) {
  console.log('created vertex', vertex);
});

使用Tinkerpop API时,他们建议使用createVertex而不是insert,因为createVertex用于图形和插入文档...你可以尝试使用create()方法吗?

答案 1 :(得分:0)

我正在使用SQL并且它有效。

sql = "INSERT INTO Station set linked = (select from LinkedClass where LinkedProb = 'value'), prop = 'value'"

OrientVertex vertex = new OrientVertex();
vertex = graph.command(new OCommandSQL(sql)).execute();

答案 2 :(得分:0)

除非您添加了正确类型的正确字段,否则我认为不可能实现这一目标'链接'在您的架构中。 (我很少这样做。)

现在没有正确的链接' type inserted你可以做相反的事情,store是一个String,并利用查询函数正确使用它:

db.insert().into('table').set({prop: '#15:14'}).one();

它将被转换为String(这有点难过)但是你可以在查询中使用它:

SELECT eval(prop) FROM table; 

它将被“评估”到节点RecordID,您可以直接使用它并调用expand()等函数。

例如:

SELECT name FROM (SELECT expand(eval(prop)) FROM table); 

将eval存储在insert()中的节点,抓取节点,展开它并收集其name属性。