我在hyperledger composer queries.qry文件中有一个查询。
query checkOwnerUniqueness{
description: "Select owner with given identifier"
statement:
SELECT org.acme.participant.Owner
WHERE (idNum == _$idNum)
}
现在我的查询有效,如果id号是abc123并且用户搜索abc123但是如果用户将值传递为ABC123则失败。但是,我想查询与所有者回复是否以小写或大写形式输入字符。
我已经尝试过一般的SQL API,即LOWER()和UPPER(),但似乎它们并不适用于Hyperleger作曲家查询语言。因此,有些人可以帮助我了解如何在Hyperledger Composer查询文件中执行此操作。
答案 0 :(得分:0)
我首先建议使用相同的大小写首先插入ID(即以编程方式)。 Composer只是将查询传递给CouchDB的查询语言FYI,并尊重输入数据的区分大小写。
您是否知道可以使用regex
来验证ID字段(请参阅建模语言文档here? - 对我来说似乎是一个非常重要的领域(而不是姓氏字段)。< / p>
您可以在函数中使用其他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字段总是在同一个案例中输入,只是说。