You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向MongoDB类型化Collection插入doc!?Rocket鉴权Token存储报错

解决MongoDB Collection insert_one的类型不匹配问题

问题核心是你的Collection<Token>要求插入的是Token结构体实例,但你传入的是doc!宏生成的Document类型,两者类型不兼容,因此触发了Borrow trait未实现的错误。

不需要手动实现Borrow trait,直接创建Token结构体实例传入即可,修改后的代码如下:

fn set_token(&self, username: &String, token: &String) -> Result<InsertOneResult, mongodb::error::Error> {
    let token_doc = Token {
        username: username.clone(),
        token: token.clone(),
        timestamp: 0,
    };
    self.tokencol.insert_one(token_doc, None)
}

如果希望避免字符串克隆,可以调整函数参数为所有权转移的String类型(需确保调用方可以转移字符串所有权):

fn set_token(&self, username: String, token: String) -> Result<InsertOneResult, mongodb::error::Error> {
    let token_doc = Token {
        username,
        token,
        timestamp: 0,
    };
    self.tokencol.insert_one(token_doc, None)
}

另外请确保你的依赖配置正确,Cargo.toml中需要包含MongoDB的serde序列化支持:

[dependencies]
mongodb = { version = "2.0", features = ["sync", "serde"] }
serde = { version = "1.0", features = ["derive"] }

内容的提问来源于stack exchange,提问作者TheEyeOfAr3s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:10:32