我已经浏览了Aurelia DI的文档并查看了源代码并希望分享我想要实现的内容,这样如果我遗漏了一些明显的东西,我就会被击落.我已经在这里查看了Aurelia的TS 示例,但我看不出它是如何工作的,而且缺少文档.
我想要的是:
dataProvider.js(数据提供者接口)
export interface DataProvider {
getData(): number;
}
Run Code Online (Sandbox Code Playgroud)
itemDisplayer1.js(将使用实现接口的注入类的类)
import {inject} from 'aurelia-framework';
import {DataProvider} from './dataProvider';
@inject(DataProvider)
export class itemDisplayer1 {
constructor(public dataProvider: DataProvider) {
this.dataProvider = dataProvider;
this.data = dataProvider.getData();
}
}
Run Code Online (Sandbox Code Playgroud)
itemDisplayer2.js(另一个将使用实现接口的注入类的类)
import {inject} from 'aurelia-framework';
import {DataProvider} from './dataProvider';
@inject(DataProvider)
export class itemDisplayer2 {
constructor(public dataProvider: DataProvider) {
this.dataProvider = dataProvider;
this.data = dataProvider.getData();
}
}
Run Code Online (Sandbox Code Playgroud)
GoodDataProvider.js
import {DataProvider} …Run Code Online (Sandbox Code Playgroud) 背景:我正在尝试使用这种方法实现一个时间序列版本的数据库,使用gremlin(tinkerpop v3).
我想获取给定身份节点(蓝色)的最新状态节点(红色)(由包含时间戳范围的"状态"边缘链接),但我想返回包含id的单个聚合对象( cid)来自身份节点和来自状态节点的所有属性,但我不想显式列出它们.(8640000000000000是我指示没有'到'日期的方式 - 即边缘是当前的 - 与所示图像略有不同).
我到目前为止:
:> g.V().hasLabel('product').
as('cid').
outE('state').
has('to', 8640000000000000).
inV().
as('name').
as('price').
select('cid', 'name','price').
by('cid').
by('name').
by('price')
=>{cid=1, name="Cheese", price=2.50}
=>{cid=2, name="Ham", price=5.00}
Run Code Online (Sandbox Code Playgroud)
但是你可以看到我必须列出'state'节点的属性 - 在上面的例子中,产品的名称和价格属性.但这将适用于任何域对象,因此我不想一直列出属性.我可以在此之前运行查询来获取属性,但我认为我不需要运行2个查询,并且有2次往返的开销.我看过'聚合','联盟','折'等,但似乎没有做到这一点.
有任何想法吗?
===================
编辑:基于丹尼尔的回答(这不是我想要的ATM)我将使用他的示例图.在'modernGraph'人 - 创 - >软件中.如果我跑:
> g.V().hasLabel('person').valueMap()
==>[name:[marko], age:[29]]
==>[name:[vadas], age:[27]]
==>[name:[josh], age:[32]]
==>[name:[peter], age:[35]]
Run Code Online (Sandbox Code Playgroud)
然后结果是具有属性的实体列表.我想要的是,假设一个人只能创建一个软件(尽管希望我们将看到这可以在以后为所创建的软件列表打开),将创建的软件"语言"属性包含在返回实体获取:
> <run some query here>
==>[name:[marko], age:[29], lang:[java]]
==>[name:[vadas], age:[27], lang:[java]]
==>[name:[josh], age:[32], lang:[java]]
==>[name:[peter], age:[35], lang:[java]]
Run Code Online (Sandbox Code Playgroud)
目前,迄今为止最好的建议是:
> g.V().hasLabel('person').union(identity(), out("created")).valueMap().unfold().group().by {it.getKey()}.by {it.getValue()}
==>[name:[marko, lop, lop, lop, vadas, …Run Code Online (Sandbox Code Playgroud)