小编Joh*_*son的帖子

Aurelia DI带有打字稿接口

我已经浏览了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)

javascript dependency-injection aurelia

15
推荐指数
1
解决办法
2047
查看次数

Gremlin - 如何合并顶点以组合其属性而不显式列出属性?

背景:我正在尝试使用这种方法实现一个时间序列版本的数据库,使用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)

gremlin titan tinkerpop3

5
推荐指数
1
解决办法
3003
查看次数