当客户端是另一个Vapor服务器时,Vapor Fluent查询失败

时间:2018-06-02 06:18:13

标签: swift vapor

我已经设置了一个玩具Vapor服务器,当GET请求发送到/nodes时,它只会吐出几个IP地址的列表。我用curl和Postman测试它,它按预期工作。

我认为另一个Vapor服务器在启动时ping第一个端点。但是,当请求来自此Vapor客户端而不是Postman或curl时,服务器在尝试查询节点时会抛出此错误。

[ ERROR ] SQLiteError.error: no such table: nodes (SQLiteQuery.swift:91).

我在SQLiteQuery.swift中确认在两种情况下生成的原始查询都是相同的。我无法理解为什么它在一个案例中起作用而在另一个案例中起作用。

/** Server */
func index(_ req: Request) throws -> Future<[Node]> {
    return Node.query(on: req).all()
}    

/** Client */
func fetchNetworkPeersFromHub(in container: Container) throws -> Future<[Peer]> {
    return try container.client().send(.GET, to: "http://localhost:3000/nodes").flatMap({ response in
        return try response.content.decode([Peer].self)
    })
}

请求对象是唯一的区别,请求容器只是作为参数传递以访问其事件循环。标题和其他参数不应该只对数据库中的所有节点进行任何影响。

有人可以提供有关如何调试的建议吗?

GET /nodes HTTP/1.1 cache-control: no-cache Postman-Token: 2fcc907e-a334-4edd-b445-a05a29e5a15f User-Agent: PostmanRuntime/7.1.1 Accept: */* Host: localhost:3000 accept-encoding: gzip, deflate Connection: keep-alive <no body>

GET /nodes HTTP/1.1 Host: localhost:3000 Connection: keep-alive Accept: */* User-Agent: Run (unknown version) CFNetwork/902 Darwin/17.7.0 (x86_64) Accept-Language: en-us Content-Length: 0 Accept-Encoding: gzip, deflate <no body>

0 个答案:

没有答案