在 hyperledger-composer 中访问 "named query" 中的数组 属性
Accessing array property in "named query" in hyperledger-composer
在我的 hyperledger composer 应用程序中,我想编写一个命名查询,returns 所有有特定爱好的人。
"Person" 的模型如下:
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
--> Hobby[] hobbies optional
}
"Hobby" 的模型如下:
asset Hobby identified by name {
o String name
}
命名查询具有以下结构:
query selectPersonsByHobby {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE //don't know what to put here//
}
我不知道在 "WHERE" 运算符后面放什么才能实现我想要的。
我想要如下内容:
query selectPersonsByHobby {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies.contains(_$hobby))
}
这可能吗?
简短的回答是这个查询应该有效:
query selectConsultantsBySkill {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies CONTAINS _$targetHobby)
}
但请注意,因为您的爱好是 Relationships 的数组,所以 targetHobby 参数必须类似于 resource:org.acme.Hobby#cycling
。在生产场景中,您将是 'calling' 来自 UI 程序的查询,因此您可以预先添加关系语法。
我想这只是一个测试例子,但我想知道Hobby是否需要成为一种关系?如果不这样做会更容易。
您也可以使用概念(甚至是概念中的枚举类型!)。下面是修改后的模型和带有概念的查询的示例:
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
o Interest[] passTime
}
concept Interest {
o String name
o String description
}
query selectConsultantsBySkill {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (passTime CONTAINS (name == _$targetHobby ))
}
在我的 hyperledger composer 应用程序中,我想编写一个命名查询,returns 所有有特定爱好的人。
"Person" 的模型如下:
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
--> Hobby[] hobbies optional
}
"Hobby" 的模型如下:
asset Hobby identified by name {
o String name
}
命名查询具有以下结构:
query selectPersonsByHobby {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE //don't know what to put here//
}
我不知道在 "WHERE" 运算符后面放什么才能实现我想要的。
我想要如下内容:
query selectPersonsByHobby {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies.contains(_$hobby))
}
这可能吗?
简短的回答是这个查询应该有效:
query selectConsultantsBySkill {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies CONTAINS _$targetHobby)
}
但请注意,因为您的爱好是 Relationships 的数组,所以 targetHobby 参数必须类似于 resource:org.acme.Hobby#cycling
。在生产场景中,您将是 'calling' 来自 UI 程序的查询,因此您可以预先添加关系语法。
我想这只是一个测试例子,但我想知道Hobby是否需要成为一种关系?如果不这样做会更容易。
您也可以使用概念(甚至是概念中的枚举类型!)。下面是修改后的模型和带有概念的查询的示例:
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
o Interest[] passTime
}
concept Interest {
o String name
o String description
}
query selectConsultantsBySkill {
description: "Select all persons with a certain hobby."
statement:
SELECT org.comp.myapp.Person
WHERE (passTime CONTAINS (name == _$targetHobby ))
}