以下是主要Router
内容async fn main()
let pool = PgPoolOptions::new()
.max_connections(5)
.acquire_timeout(Duration::from_secs(3))
.connect(&db_connection_str)
.await
.expect("can't connect to database");
let app = Router::new().nest("/products", create_products_router()).with_state(&pool);
出现此错误&pool
类型不匹配 [E0308] 预期
()
,但发现&sqlx_core::pool::Pool<sqlx_postgres::database::Postgres>
这是嵌套的Router
pub fn create_products_router() -> Router {
Router::new()
.route("/products", get(get_products_list::get_products_list))
}
收到此错误:
类型不匹配 [E0308] 预期
axum::routing::method_routing::MethodRouter
,但发现axum::routing::method_routing::MethodRouter<sqlx_postgres::PgPool>
最后函数本身
pub async fn get_products_list(State(pool): State<PgPool>,) -> Result<String, (StatusCode, String)> {
sqlx::query_scalar("select * from product")
.fetch(&pool)
.await
.map_err(internal_error)
}
如何pool
从主函数传递Router
到嵌套Router
函数get_products_list
?
在类型中
Router<S>
,S
是缺失状态的类型。在此函数中:由于您没有指定
S
,因此默认为()
。明确指定通用参数为路由器所需的状态类型: