我是hyperledger面料的新手.我已经下载了面料v1.2.0,我尝试从fabric-sample文件夹运行fabcar示例.我对链码的查询进展顺利,但是当我试图调用链码时,我从cmd得到了以下错误.
这是我对链码的要求
var request = {
//targets: let default to the peer assigned to the client
chaincodeId: 'fabcar',
fcn: 'changeCarOwner',
args: ['CAR4', 'Dave'],
chainId: 'mychannel',
txId: tx_id
};
Run Code Online (Sandbox Code Playgroud)
错误:
无法成功调用:: TypeError:fabric_client.newEventHub不是函数
当我试图在index.t.ds中找到newEventHub时,我找不到该函数.任何人都可以帮助我.谢谢你提前.
我在一个包中有一个结构体,它上面有耗时的方法,而且通过它的工厂函数构造也很耗时。因此,在依赖于这个其他结构的包中,我希望能够在创建后使用假工厂函数和假结构对其进行测试。由于结构是通过工厂函数构造的,我想伪造工厂函数并在测试期间将替代工厂函数传递到我的结构中。
昂贵的包的一个例子是:
package expensive
import "fmt"
type myStruct struct{}
func (m *myStruct) DoSomething() {
fmt.Println("In Do something")
}
func (m *myStruct) DoSomethingElse() {
fmt.Println("In do something else")
}
// CreateInstance is expensive to call
func CreateInstance() *myStruct {
return &myStruct{}
}
Run Code Online (Sandbox Code Playgroud)
我使用它的主包看起来像这样:
package main
import "play/expensive"
func main() {
thing := structToConstruct{expensive.CreateInstance}
thing.performAction()
}
type myInterface interface {
DoSomething()
}
type structToConstruct struct {
factoryFunction func() myInterface
}
func (s *structToConstruct) performAction() {
instance := s.factoryFunction()
instance.DoSomething()
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码抱怨错误:
.\main.go:6: …
我有一个包含summary字段和其他字段的 JSON 行文件。我想使用 JQ 删除所有汇总字段。这是我的输入:
{"object1": {"summary":"Some summary I want removing", "keepMe":"please"}}
{"object2": {"summary":"Delete me too!", "keepMe":"pretty please"}}
Run Code Online (Sandbox Code Playgroud)
这是所需的输出:
{"object1": {"keepMe":"please"}}
{"object2": {"keepMe":"pretty please"}}
Run Code Online (Sandbox Code Playgroud) 我在 Grafana 中有一个图表,使用 Prometheus 数据源来显示 API 的错误率。这对于这个查询工作得很好:
sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint, statusCode)
Run Code Online (Sandbox Code Playgroud)
我从 API 获取非 200 响应代码的比率,然后在运行 3 个 API 实例时将这些比率相加。然后,我按照exported_endpoint(用户请求的实际路径)和statusCode返回的确切 HTTP 状态代码对它们进行分组。
虽然这作为原始数字有点用处,但并没有那么有用。每秒 100 个请求中出现 100 个错误是非常糟糕的,而每秒 1,000,000 个请求中出现 100 个错误则不是什么问题。因此,我想除以请求总数,但我很挣扎。如果我做:
(sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint, statusCode))/(sum(rate(va_request_response_code{endpoint="api"}[5m])) by (exported_endpoint))
Run Code Online (Sandbox Code Playgroud)
然后它只是显示No data points这是有意义的,因为在第一种情况下它是按被除数中的 statusCode 分组而不是除数中的,因此它必须意味着它正在尝试在除法之前找到匹配项。相反,这样做确实有效:
(sum(rate(va_request_response_code{endpoint="api", statusCode!="200"}[5m])) by (exported_endpoint))/(sum(rate(va_request_response_code{endpoint="api"}[5m])) by (exported_endpoint))
Run Code Online (Sandbox Code Playgroud)
但随后我失去了我想要的按状态代码分组。理想情况下,我想知道 x% 的请求返回404,y% 返回500。这可能吗?