node.js - 在gremlin nodejs中的顶点之间添加边
问题描述
目前正在使用 nodejs & gremlin 构建应用程序。我通过 nodejs 创建了顶点。现在我正在寻找在两个顶点之间创建边。我尝试了很多选择。没运气。!
const gFromNode = await get_vertex(fromNodeLabel, fromNodePropName, fromNodePropValue);
const gToNode = await get_vertex(toNodeLabel,toNodePropName,toNodePropValue);
const edge_traversal = this.g.V(fromNodeLabel).property(fromNodePropName, fromNodePropValue).as('X').
V(toNodeLabel).property(toNodePropName, toNodePropValue).as('Y').
addE(edgeLabel).from('X').to('Y');
Object.entries(edgeProperties).map(value => {
if (value[0] && value[1]) {
edge_traversal.property(value[0], value[1])
}
})
const result = await edge_traversal.next();
if (!(result && result.value && result.value.id)) {
throw graph_constants.unable_to_create_edge;
} else {
"Edge created"
}
==== seperate function =====
async get_vertex(labelName, property, value) {
if (!labelName || !property || !value) {
return error;
}
return await this.g.V().hasLabel(labelName).has(property,value);
}
解决方案
您无需调用get_vertex
可以在一个查询中执行的方法:
const __ = gremlin.process.statics;
g.V().
has(fromNodePropName, fromNodePropValue).
addE(edgeLabel).to(__.V().
has(toNodePropName, toNodePropValue))
示例:https ://gremlify.com/lxpvd6z6yuj
此外,get_vertex
如果您想使用该方法并且不需要property
边缘查询中的步骤,则该方法缺少终端步骤:
const gFromNode = await get_vertex(fromNodeLabel, fromNodePropName, fromNodePropValue);
const gToNode = await get_vertex(toNodeLabel,toNodePropName,toNodePropValue);
const edge_traversal = this.g.V(fromNodeLabel.id).as('X').V(toNodeLabel.id).as('Y').
addE(edgeLabel).from('X').to('Y');
Object.entries(edgeProperties).map(value => {
if (value[0] && value[1]) {
edge_traversal.property(value[0], value[1])
}
})
const result = await edge_traversal.next();
if (!(result && result.value && result.value.id)) {
throw graph_constants.unable_to_create_edge;
} else {
"Edge created"
}
==== seperate function =====
async get_vertex(labelName, property, value) {
if (!labelName || !property || !value) {
return error;
}
return await this.g.V().hasLabel(labelName).has(property,value).next().then(res => res.value);
}
推荐阅读
- swift - RXSwift 平面地图
- css - 选择中的 Antd 自动换行
- node.js - DynamoDB 为 deleteItem 返回 200 statusCode 但它仍然存在于控制台上
- vue.js - 如何在 nuxt-auth keycloak 中进行自动登录
- r - 如何用R中的n-(重复次数)替换数据框中的重复条目?
- javascript - 在 Heroku 上成功部署 Node js 后,我遇到了应用程序错误
- swift - WebRTC Call 想运行拨号音
- arrays - 找出某些整数出现在Scala数组中的频率
- python - 找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/index.html/
- reactjs - 使用 react-native-ionicons 和 material-bottom-tabs 不显示反应原生图标(用十字显示)