如何从Rust应用程序连接到Docker容器中的SurrealDB?

9rnv2umw  于 2022-11-24  发布在  Docker
关注(0)|答案(3)|浏览(166)

我正试图弄清楚如何将我的Rust应用程序连接到在Docker容器内运行的surrealdb数据库。
SurrealDB网站上的文档只指定了三种连接数据库的方法,它们是:内存、文件和TiKV。
我在Docker上运行surrealdb,如他们网站上所示:

docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start

我试着做了如下的事情:

let ds = Datastore::new("http://0.0.0.0:8000").await?;

但我得到以下错误:

value: Ds("Unable to load the specified datastore")'

也许还没有实施?

avwztpqn

avwztpqn1#

**您使用了错误的库!**crate surrealdb只能用于启动SurrealDB的数据库示例。但它不是客户端库。

正式的客户端库机箱称为surrealdb-rs
您可以使用以下方法将其添加到项目中:
(这个️箱子还没有发布在crates.io上,你还不能用cargo add下载。️)

cargo add surrealdb-rs

我还建议在启动数据库时为root用户设置一个密码。否则,您可能会遇到身份验证问题。

docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start --pass root

现在,您可以使用Surreal::connect()连接到正在运行得数据库.

use surrealdb_rs::{Result, Surreal};
use surrealdb_rs::param::Root;
use surrealdb_rs::protocol::Ws;

#[tokio::main]
async fn main() -> Result<()> {
    let client = Surreal::connect::<Ws>("localhost:8000").await?;

    // Signin as a namespace, database, or root user
    client.signin(Root {
        username: "root",
        password: "root",
    }).await?;
}

在官方库在www.example.com上可用之前crates.io,您可以查看surreal-simple-client。但我建议您等待官方库。

yhqotfr8

yhqotfr82#

有一个新的rust库用于处理与surrealdb的连接,它是由SurrealDB的同一个作者构建和维护的。
https://github.com/surrealdb/surrealdb.rs
回购协议中的报价:
此库允许从服务器端和客户端(通过Wasm)代码对远程数据库进行简单和高级查询。默认情况下,所有到SurrealDB的连接都是通过WebSockets建立的,并且在连接终止时自动重新连接。连接在断开时自动关闭。

9jyewag0

9jyewag03#

According to the IANA0.0.0.0只能作为源地址,因此您的代码可能不正确。如果容器在同一主机上运行,您可能需要使用localhost127.0.0.1)。

更新

直到最近,还不能从Rust连接到一个远程SurrealDB示例,只能运行一个嵌入式示例。现在有了一个client library for rust。你可以通过WebSockets连接到你的数据库,如下所示:

use surrealdb_rs::{Surreal, protocol::Ws};

let client = Surreal::connect::<Ws>("localhost:8000").await?;

相关问题