Hyperledger fabric 如何使Hyper ledger Composer查询不区分大小写?

Hyperledger fabric 如何使Hyper ledger Composer查询不区分大小写?,hyperledger-fabric,hyperledger,hyperledger-composer,Hyperledger Fabric,Hyperledger,Hyperledger Composer,我在hyperledger composer queries.qry文件中指定了一个查询 query checkOwnerUniqueness{ description: "Select owner with given identifier" statement: SELECT org.acme.participant.Owner WHERE (idNum == _$idNum) } 现在,若id号是abc123,并且用户搜索abc123,那个么我的查询工作,

我在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 composer查询语言中不起作用。因此,有些人可以帮助我了解如何在Hyperledger Composer查询文件中执行此操作。

我首先建议将ID插入相同案例的第一位(即编程)。Composer只需将查询传递给CouchDB的查询语言FYI,并尊重输入数据时的大小写敏感性

您是否知道可以使用
regex
验证ID字段(请参见建模语言文档?)对我来说是一个非常重要的字段(与姓氏字段相对)

您可以在函数中使用其他
buildQuery
函数(例如,仍然有一个参数),或者如果您坚持将查询保留在
querys.qry
中,则提供两个(上下):

querycheckowneruniquence{
描述:“选择具有给定标识符的所有者”
声明:
选择org.acme.participant.Owner
其中(idNum===\u$upper ID idNum===\u$lower)
}
var str=“joe123”;
var lower=str.toLowerCase();
var upper=str.toUpperCase();
返回查询('checkowneruniquence',{idNum:str})//ID以小写形式传递
//或
//返回查询('checkowneruniquence',{idNum:lower,idNum:upper})//上下两个参数
.然后(函数(结果){
对于(var n=0;n

不管怎样,给你一些选择——我想我会确保ID字段总是以同样的大小写输入,只是说。

我也做了同样的事情,确保所有内容都以大写或小写输入。但万一我们得到了混合字符串,即“AbCd123”然后,即使使用上述方法也很难匹配。如果在模型定义中使用
regex
,则不应该发生这种情况(就创建参与者而言)
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
            }
    });