创建一个将容器 "X" 作为参数的函数,它将 X.size() 参数传递给它调用的可变参数函数
Creating a function that takes a container "X" as a parameter, which passes X.size() parameters to a variadic function that it calls
我目前正在开发一个 HTTP API,我想用它来对数据库执行 CRUD 操作。我尝试为它编写尽可能通用和模块化的代码。我正在使用 MySQL X DevAPI.
目前,我遇到了以下问题:
mysqlx::Result MySQLDatabaseHandler::jsonToCUDOperation (const nlohmann::json& json, mysqlx::Table& table, int crudEnum)
上面的函数将对 json 对象的引用、对 table 对象的引用和一个整数作为参数。
我想要这个函数做的是:
- 检查整数以决定执行什么操作
- 检查 json 的大小以了解有多少参数将传递给用于执行操作的 X DevAPI 的可变参数函数。
- Assemble 并执行函数调用
例如,假设一个 table "users",以及一个 json 对象 "X" 具有以下内容:
{"id":1,"username":"test_user","email":"test@test.com","first_name":"test"}
现在,当我像这样调用函数时
jsonToCUDOperation(X, users, MySQLDatabaseHandler::cud::create);
我希望函数解析 json 对象并根据 json 对象的键和值调用带有参数(和参数计数)的 mysqlx::Table::Insert 函数,所以最终打电话
users.insert("id", "username", "email", "first_name")
.values("1", "test_user", "test@test.com", "test").execute();
我首先考虑使用模板函数实现此行为,但后来我认为这没有意义,因为模板函数定义是在编译时生成的,而我想要的是在运行时需要动态行为。所以我认为不可能按照我的意图设计它,因为我的理解是 C++ 函数的行为不能根据您传递给它的参数在运行时更改。但我想,在我开始开发一个只能处理有限 json 对象大小的解决方案之前,我会在这里询问以确保我实际上不能做我想做的事。
在此先感谢您的启发
您实际上可以将 STL 容器传递给 MySQL 的 X DevAPI
提供的 CRUD 函数
我目前正在开发一个 HTTP API,我想用它来对数据库执行 CRUD 操作。我尝试为它编写尽可能通用和模块化的代码。我正在使用 MySQL X DevAPI.
目前,我遇到了以下问题:
mysqlx::Result MySQLDatabaseHandler::jsonToCUDOperation (const nlohmann::json& json, mysqlx::Table& table, int crudEnum)
上面的函数将对 json 对象的引用、对 table 对象的引用和一个整数作为参数。
我想要这个函数做的是:
- 检查整数以决定执行什么操作
- 检查 json 的大小以了解有多少参数将传递给用于执行操作的 X DevAPI 的可变参数函数。
- Assemble 并执行函数调用
例如,假设一个 table "users",以及一个 json 对象 "X" 具有以下内容:
{"id":1,"username":"test_user","email":"test@test.com","first_name":"test"}
现在,当我像这样调用函数时
jsonToCUDOperation(X, users, MySQLDatabaseHandler::cud::create);
我希望函数解析 json 对象并根据 json 对象的键和值调用带有参数(和参数计数)的 mysqlx::Table::Insert 函数,所以最终打电话
users.insert("id", "username", "email", "first_name") .values("1", "test_user", "test@test.com", "test").execute();
我首先考虑使用模板函数实现此行为,但后来我认为这没有意义,因为模板函数定义是在编译时生成的,而我想要的是在运行时需要动态行为。所以我认为不可能按照我的意图设计它,因为我的理解是 C++ 函数的行为不能根据您传递给它的参数在运行时更改。但我想,在我开始开发一个只能处理有限 json 对象大小的解决方案之前,我会在这里询问以确保我实际上不能做我想做的事。
在此先感谢您的启发
您实际上可以将 STL 容器传递给 MySQL 的 X DevAPI
提供的 CRUD 函数