如何使 Hyper ledger Composer 查询不区分大小写?
How to make Hyper ledger Composer query case insensitive?
我在 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 字段(请参阅建模语言文档 here? - 对我来说似乎是一个非常重要的字段(而不是说姓氏字段) .
您可以在您的函数中使用其他 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 字段总是以相同的大小写输入,只是说。
我在 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 字段(请参阅建模语言文档 here? - 对我来说似乎是一个非常重要的字段(而不是说姓氏字段) .
您可以在您的函数中使用其他 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 字段总是以相同的大小写输入,只是说。