Как сделать регистр запросов Hyper ledger Composer нечувствительным к регистру? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть запрос в файле hyperledger composer query.qry.

query checkOwnerUniqueness{
  description: "Select owner with given identifier"
  statement:
    SELECT org.acme.participant.Owner
       WHERE (idNum ==  _$idNum)
}

Теперь Мой запрос работает, если id-номер abc123 и пользователь ищет abc123, но он не работает, если пользователь передает значение как ABC123.Однако я хотел бы, чтобы запрос отвечал владельцу, вводятся ли символы в нижнем или верхнем регистре.

Я уже пробовал общие API SQL, т.е. LOWER () и UPPER (), но кажется, что они не работают на языке запросов Hyperleger composer.Поэтому некоторые могут помочь мне понять, как это сделать, в файле запросов Hyperledger Composer.

1 Ответ

0 голосов
/ 06 июня 2018

Сначала я бы предложил, чтобы идентификаторы вставлялись в первую очередь (то есть программно) в одном и том же случае.Composer просто передает запрос к языку запросов CouchDB FYI и учитывает чувствительность к регистру, при котором были введены данные.

Известно ли вам, что вы можете использовать regex для проверки поля идентификатора (см. Документы на языке моделирования здесь ? - мне кажется очень важным полем (в отличие от поля фамилии).

В своей функции вы можете использовать функцию buildQuery (например, с одним параметром) в своей функции- или если вы настаиваете на том, чтобы оставить QUERY в queries.qry, тогда укажите два (нижний и верхний):

query checkOwnerUniqueness{
  description: "Select owner with given identifier"
  statement:
    SELECT org.acme.participant.Owner
       WHERE (idNum ==  _$upper ID idNum == _$lower )
}


var str = "joe123";
var lower = str.toLowerCase();
var upper = str.toUpperCase();
return query('checkOwnerUniqueness', {idNum: str} ) // ID passed in lower case
// OR
// return query('checkOwnerUniqueness', {idNum: lower, idNum: upper})  // upper or lower two parms
    .then(function (results) {
            for (var n = 0; n < results.length; n++) { // blah
            // process all objects returned in the query
            }
    });

В любом случае, давая вам альтернативы - я думаю, я бы удостоверился, что поле ID всегда вводится втот же случай, просто говорю.

...