我在此查询语句中遇到一个问题:查询未返回任何结果。
查询:
statement:
SELECT org.example.identitynetwork.IdentityProof
WHERE ((owner == _$owner) AND (proofName == _$proofName))
我的首席技术官是:
asset IdentityProof identified by proofId {
o String proofId
o String proofName
o String encodedData
--> Owner owner
}
在logic.js中:
let idProofs = await query('selectRequestedIdProofsByOwner',
{
"owner": proofOwner,
"proofName": proofName
}
);
即使我已正确配置权限,并且存在具有给定所有者和证明名称的证明,此查询也不会返回任何结果。
答案 0 :(得分:1)
使用where
和and
过滤器,
let idProofs = await query('selectRequestedIdProofsByOwner',
{
"where": {
"and": [
{ "owner": proofOwner },
{ "proofName": proofName }
]
}
}
);
要注意的一点,这不适用于关系属性,这仅用于基本的字符串匹配。在您的示例中,owner
与proofOwner
的匹配不起作用。
可以通过在namespace
的前缀前面加上Resource type
和#
资源ID来实现关系匹配。
Unique
在您的示例中,let idProofs = await query('selectRequestedIdProofsByOwner',
{
"where": {
"and": [
{ "owner": "resource:org.example.businessnetwoek.ParticipantType#"+proofOwner },
{ "proofName": proofName }
]
}
}
);
将是uniqueId