如何使用c++在RethinkDb中列出表

How to list tables in RethinkDb using C++

本文关键字:RethinkDb 何使用 c++      更新时间:2023-10-16

当我在PythonJavaScript中做一些事情时,我总是有很多机会,既可以阅读特定库的文档,也可以尝试大量的小示例。

不幸的是,在C++中,在文档中提供至少少量的工作示例并不那么受欢迎(出于什么原因?)两个很好的例子是MongoDb和RethinkDb的c++客户端。

我这里的问题是关于RethinkDB的。在Python中,我知道如何列出所有表名,不是因为有文档,我应该深入研究驱动程序代码,而是因为有一个小的方便的例子:

r.db('test').table_list().run(conn)

我做完了。在C++我不知道如何做到这一点-如何列出所有表的名称。我甚至不知道是否有这样的方法。我希望有人能提供一些指导和分享他们的知识。

编辑

似乎,就像我找到了一个合适的方法table_list,但不幸的是我不知道如何使用它。此外,似乎我试图以错误的方式连接到数据库-我的意思是我连接到服务器,但不连接到特定的数据库(我又不知道如何实现这一点)。所以,这就是我现在的内容:

std::unique_ptr<R::Connection> conn = R::connect("localhost",28105);
//^^^ I want to connect to a particular database "mydb" - how to do that?
R::Cursor cursor = R::table_list().run(*conn);
for(R::Datum& item : cursor){
    do_something(R::write_datum(item).c_str());
    //           ^^^ is that right???
}

如果我这样做,如我所示,没有指定数据库名称,那么我什么也得不到。但是,如果我尝试这样连接:

R::connect("localhost",28105,"mydb");

然后在for中我得到一个无限循环。所以,我需要一些帮助。谢谢!

编辑

哎呀,我找到解决办法了。我必须承认,这是相当直观的。我会贴在下面的

解决方案:

std::unique_ptr<R::Connection> conn = R::connect("localhost",28105);
R::Cursor cursor = R::db("mydb").table_list().run(*conn);
for(R::Datum& item : cursor){
  do_something(R::write_datum(item).c_str());
}

效果很好。我要感谢AtnNn——这个伟大的驱动程序的唯一开发者。