我对hyperledger composer中查询的返回值有疑问。
供参考我的查询:
query findCountOfficer {
description: "find count officer asset given name"
statement:
SELECT org.example.CountOfficer
WHERE (name == _$nameParam)
}
我的质疑:
let countOfficerRecord = await query('findCountOfficer', {nameParam: countOfficerName})
我试图从计数官员记录参数中检索计数官员的ID。
有谁知道如何访问查询返回的资源的标识符或字段?
或者如果没有,如何查询返回employeeId? (即选择employeeID)
我尝试过的:
当我打印countOfficerRecord
我得到Resource {id=org.carm.CountOfficer#1}
我想访问1个ID。但是,如果我调用countOfficerRecord.id
或countOfficerRecord.employeedId
(因为employeeId是模型文件中的标识符),我会得到undefined
。
由于这是一个资源,我还尝试了getIdentifier()
和isResource()
等文档中的函数,并得到一个错误,这些不是countOfficerRecord
的函数。
谢谢!
如果你想获得标识符,那么试试这个
console.log( countOfficerRecord.$identifier)
如果你想要countOfficerRecord的整个记录
然后尝试这个
console.log([countOfficerRecord])
看起来您正在调用您拥有的资源对象上的toString()方法(通过用于打印对象的任何机制显式或隐式)。您看到的输出是toString调用的结果,而不是对象的JSON表示,您可以使用它的api与资源对象进行交互,例如
console.log(countOfficerRecord.getIdentifier());
console.log(countOfficerRecord.name)
上面的示例引用了$ identifier,这不是推荐的方法,因为这是一个内部字段名称,将来可能会更改。您应该使用资源对象的api来获取信息。
可以在此处找到资源的api参考
https://hyperledger.github.io/composer/latest/api/common-resource
我试过这个并且它有效。查询通常返回一个数组。因此,您首先引用该数组,然后获取标识符。 countOfficerRecord[0].$identifier