假设我有一个实体“地址”和一个实体“用户”,它们以 1-n 关系链接。客户端发送在我的控制器功能中评估的所有必要数据。
Controller 类在头文件中声明了两个必需的 Mapper:
(auth.h)
namespace MDL = drogon_model::TestDB;
public:
METHOD_LIST_BEGIN
ADD_METHOD_TO(Authentication::registration, "/auth/register", Post,Options);
METHOD_LIST_END
private:
Mapper<MDL::User> userMapper = Mapper<MDL::User>(app().getFastDbClient());
Mapper<MDL::Address> addressMapper = Mapper<MDL::Address>(app().getFastDbClient());
在控制器函数中,我想对两个实体使用映射器的插入方法,将数据异步插入表中。对于没有嵌套回调的地址和用户,等待两个插入的正确 C++ 方法是什么?欢迎使用 RxCpp 等库。
(auth.cc)
void Authentication::registration(const HttpRequestPtr& req,std::function<void (const HttpResponsePtr &)> &&callback) {
Json::Value requestBody = *req->getJsonObject().get();
MDL::User user(requestBody);
userMapper.insert(user, [callback](const MDL::User &u) {
LOG_DEBUG << "User Insert Success: ";
}, [&isSuccess](const DrogonDbException &e) {
LOG_DEBUG << e.base().what();
});
addressMapper.insert(address, [callback](const MDL::Address &a) {
LOG_DEBUG << "Address Insert Success!";
}, [](const DrogonDbException &e) {
LOG_DEBUG << e.base().what();
});
}
回调的类型为 std::function,但也有一个 std::future 类型的函数“insertFuture”可用