Как сделать регистр запросов Hyper ledger Composer нечувствительным к регистру?

У меня есть запрос в архиве файла.

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

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

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

1 ответ

Решение

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

Знаете ли вы, что вы можете использовать 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
            }
    });

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

Другие вопросы по тегам