当前位置: 首页 > 软件库 > 数据库相关 > >

REACT-CPP-MONGO

C++ 编写的异步 mongo 访问库
授权协议 Apache-2.0
开发语言 C/C++
所属分类 数据库相关
软件类型 开源软件
地区 不详
投 递 者 邹杰
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

一个基于 REACT-CPP 的库,使用 C++ 编写的异步 mongo 访问库。通过使用 lambda 表达式和回调函数的形式来返回查询结果。

这个库的工作原理与普通的 mongo C++ 库基本相同,只是所有函数接受一个 lambda 参数,当结果可用(或失败)时将调用该参数。

示例代码

React::Mongo::Connection mongo("mongodb.example.org", [](React::Mongo::Connection *connection, const char *error) {
    // if no error occured, we will receive a null pointer
    if (!error) std::cout << "Connected successfully" << std::endl;
    // otherwise, we will get a description of what exactly went wrong
    else std::cout << "Connection error: " << error << std::endl;
});
/**
 *  The mongo object will be created immediately, even though the connection
 *  might not have been established. It is safe, however, to immediately run
 *  the next command on the object. They will be executed after a connection
 *  was established. Should the library fail to connect, all registered calls
 *  will receive an error.
 */
// build a query to find a specific document
Variant::Value query;
query["_id"] = "documentid";
// retrieve the document
mongo.query("database.collection", std::move(query)).onSuccess([](Variant::Value&& result) {
    // since we search for an exact id, we will get a maximum of one result
    // however, this result will always be an array
    if (result.size() == 0)
    {
        std::cout << "Could not find any document with that ID" << std::endl;
        return;
    }
    // assume that the document has a string field named 'firstname'
    std::string firstname = result[0]["firstname"];
}).onError([](const char *error) {
    std::cout << "Something went wrong querying: " << error << std::endl;
});
 相关资料
  • 我正面临着一个问题,即设计能够执行网络I/O的方法(用于可重用库)。我读过这个问题 API设计中C#5Await/Async模式 以及其他与我的问题更接近的问题。 所以,问题是,如果我想同时提供异步和非异步方法,我必须如何设计这些? 例如,要公开方法的非异步版本,我需要执行如下操作 我觉得这不是个好设计。我想要一个关于如何定义私有方法的建议(例如),这些私有方法可以包装在公共方法中以提供两个版本。

  • REACT-CPP 是利用 C++ 11 的 lambda 表达式在文件描述符或定时器激活的时候进行通知的事件循环库。在它内部实质是对 libev 库的包装,因此也依赖于该库。 在一个典型的应用程序中,你创建了一个 mainloop 类的实例,然后注册你想要查看的 filedescriptors,注册事件处理程序和计时器: #include <reactcpp.h>#include <unistd

  • 问题内容: 我是节点的新手,并尝试在节点中使用异步和事件行为优势。我以前从节点上了解到,用事件对象处理的所有内容都会异步执行。 然后我尝试了这个,请考虑以下代码: 这是异步执行吗?我认为不!为什么,因为我读了很多这句话: 一个事件被触发了,所以去做点什么,然后当你完成它之后,回来告诉我,但是与此同时,我会做点其他的事情。 就像快餐店的场景。但是上面的代码,当事件工作被触发时,将发生以下顺序: 进入

  • 我理解同步服务器和异步服务器之间的区别,但是我想知道,如果有这两种情况,哪一种更适合异步服务器还是同步服务器? > 同步:写入调用将被阻塞,直到消息准备好从内部完成队列通过线路发送。异步:写入调用立即返回,我们需要等待完成队列。在同步服务器中,如果我们添加队列,该队列基本上为evry写入调用和其他线程填充,并将其耗尽并执行stream.write然后性能将相同? 同步:gRPC内部创建线程池,线程

  • 我发现 await 并没有用 update_product_loop 还是立刻就执行力,那 await 和 async 的到底是什么含义,以及我要怎么才能做到真正的等 异步任务 a 完成再去其它呢,就是说 a 里有很多子任务是异步的

  • 正在寻找有关mongo db异步提交的适当文档。我们有一个spring boot应用程序,我们试图为我们的域对象生成审计,我们希望将javers生成的审计异步提交到mongo db中,而我们的主要基于SQL的事务是此mongodb调用的fr。任何关于这方面的建议都会非常有用。