Как сделать регистр запросов 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
}
});
В любом случае, даю вам альтернативы - думаю, я бы позаботился о том, чтобы поле идентификатора всегда вводилось в одном и том же случае, просто говоря.