水线边缘协会

Waterline Edges associations

我刚刚准备了一个模型,其中包含两个顶点和它们之间的一条边,v1、v2 和 e1,而 v1 是 class A 的实例或顶点,v2 是 class 的顶点B. e1 是 class E 的实例。我想在 waterline 中为这种关系准备模式,模式如下所示:

identity:'A',
connection:'ex1',
attributes:{
  title:'string',
  r : {collection:'B', through:'E', via:'A'}
}
identity:'A',
connection:'ex1',
attributes:{
  title:'string',
  r : {collection:'A', through:'E', via:'B'}
}

而如果我使用此模式映射到 orientdb 我的字段,它会显示集合:'B' 作为 A class 中的链接集。我只想通过边缘将它们联系起来。有没有办法跳过提及集合,只建立一个关系,根据需要将边 e1 的 @rid 映射到这些 classes 的 OUT 或 IN 字段?

xeeB,你没有提到你使用的是哪个 OrientDB 水线适配器(至少有 3 个)。我假设它是 waterline-orientdb.

在您的模式示例中,您定义了一个 "Many-to-many through" 关联,但您缺少(或没有共享)"through" 模型 (example) 的定义。

最后,使用边在顶点之间建立关系的最简单方法是使用 "Many-to-many" associations。您可以根据自己的示例使用以下代码片段执行此操作:

// Model A
{
  tableName : 'A',
  identity : 'a',
  connection : 'ex1',
  attributes : {
    title : 'string',
    r : {
      collection : 'b',
      via : 'r',
      dominant : true
    }
  }
}
// Model B
{
  tableName : 'B',
  identity : 'b',
  connection : 'ex1',
  attributes : {
    title : 'string',
    r : {
      collection : 'a',
      via : 'r'
    }
  }
}

完整的 "many-to-many" 协会工作示例位于: https://github.com/appscot/waterline-orientdb/blob/master/example/associations/many-to-many.js

更新: waterline-orientdb 现在命名为 sails-orientdb。