Как сопоставить строку в файле запроса в Hyperledger Composer? - PullRequest
0 голосов
/ 30 января 2019

Я столкнулся с одной проблемой в этом операторе запроса: запрос не возвращает результатов.

запрос:

statement:
      SELECT org.example.identitynetwork.IdentityProof
          WHERE ((owner == _$owner) AND (proofName == _$proofName))

мой cto:

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
    }
);

Этот запрос не возвращает результатов, даже если у меня правильно настроены разрешения и существует подтверждение с указанным владельцем и именем подтверждения.

1 Ответ

0 голосов
/ 31 января 2019

использовать where и and фильтры,

let idProofs = await query('selectRequestedIdProofsByOwner',
    {
        "where": {
            "and": [
                { "owner": proofOwner },
                { "proofName": proofName }
            ]
        }
    }
);

Следует отметить, что это не работает с атрибутами отношений. Это только для базового сопоставления строк.В вашем примере owner совпадение с proofOwner не будет работать.

Обновление

Сопоставление отношений можно выполнить с помощью префикса namespace name с Resource type, за которым следуют # иUnique идентификатор ресурса.

let idProofs = await query('selectRequestedIdProofsByOwner',
    {
        "where": {
            "and": [
                { "owner": "resource:org.example.businessnetwoek.ParticipantType#"+proofOwner },
                { "proofName": proofName }
            ]
        }
    }
);

В вашем примере uniqueId будет proofOwner

...