Graph 将Rest API回送到图形数据
我必须使用strongloop环回创建一个指向有向图模型的RESTAPI。 我有一组节点和一组与节点相关的关系。 关系集合存储nm关系 在models/node.json中,我包含了以下关系Graph 将Rest API回送到图形数据,graph,loopbackjs,strongloop,Graph,Loopbackjs,Strongloop,我必须使用strongloop环回创建一个指向有向图模型的RESTAPI。 我有一组节点和一组与节点相关的关系。 关系集合存储nm关系 在models/node.json中,我包含了以下关系 "relations": { "incomingNodes": { "type": "hasMany", "model": "node", "through": "relationship", "foreignKey": "endNode"
"relations": {
"incomingNodes": {
"type": "hasMany",
"model": "node",
"through": "relationship",
"foreignKey": "endNode"
},
"outgoingNodes": {
"type": "hasMany",
"model": "node",
"through": "relationship",
"foreignKey": "startNode"
}
}
在models/relationships.json中:
"relations": {
"startNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "nodeId"
},
"endNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "nodeId"
}
}
"relations": {
"startNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "startNodeId"
},
"endNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "endNodeId"
}
}
浏览器按预期填充,但是如果我使用RESTAPI创建关系
/nodes/{id}/incomingNodes/rel/{fk}
看看数据库,事情变得很奇怪。
写入以下数据:
{
"id": "55ff1072b88c93a82ae527ea", <--id of the new relationship
"nodeId": "55fef9a156468fe629d94ac8" <-- id of the {fk}
}
{
“id”:“55ff1072b88c93a82ae527ea”,A需要两件事:
foreignKey
通过
model识别中的来源(声明关系的模型)
key-through
在through
模型中识别关系的目标
A需要在声明关系的模型中使用键来识别目标
现在,假设以下模式
Node (id)
Relationships (id, startNodeId, endNodeId)
您需要在models/node.json关系中添加keyThrough
:
"relations": {
"incomingNodes": {
"type": "hasMany",
"model": "node",
"through": "relationship",
"foreignKey": "endNodeId",
"keyThrough": "startNodeId"
},
"outgoingNodes": {
"type": "hasMany",
"model": "node",
"through": "relationship",
"foreignKey": "startNodeId",
"keyThrough": "endNodeId"
}
并在models/relationships.json中使用startNodeId
和endNodeId
:
"relations": {
"startNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "nodeId"
},
"endNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "nodeId"
}
}
"relations": {
"startNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "startNodeId"
},
"endNode": {
"type": "belongsTo",
"model": "node",
"foreignKey": "endNodeId"
}
}
请注意,我对属性名称使用了endNodeId
和startNodeId
,以在relationships.json中保留您的关系名称,因为在模型中不能同时使用相同名称的关系和属性。relationships.json中的外键不正确。请尝试使用与node.json中相同的键。“foreignKey”:“startNode”和“foreignKey”:“endNode”而不是“foreignKey”:“nodeId”。我已经试过了-(,最后我决定放弃,并使用远程方法在代码中实现逻辑。我认为问题在于,我有两个指向同一模型的定向关系。如果我可以控制关系一点,而不是依赖“魔法”,那将是一种改进“。我的意思是,您可以配置FK显式。在我的示例中:Node.id Relationship.startId(槽)Relationship.endId Node.id。