我正在尝试使用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中运行了一个插入查询,并在工作室中使用原始查询字符串...
答案 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属性。