我正在使用express-validator来验证我的快速应用程序中的POST数据.我有一个表单,其中有一个选择,在用户可以选择多个选项:
<select name="category" multiple id="category">
<option value="1">category 1 </option>
.......
</select>
Run Code Online (Sandbox Code Playgroud)
如果我选择多个值,提交表单后的有效负载会显示此信息:
...&category=1&category=2&....
Run Code Online (Sandbox Code Playgroud)
现在,在我的Express应用程序中,我尝试像这样验证它:
req.checkBody('category', 'category cannot be empty').notEmpty();
Run Code Online (Sandbox Code Playgroud)
但是,即使我发送多个值后,我总是得到错误 - category cannot be empty
.如果我打印我的变量req.body.category[0]
- 我得到数据.但是,不知何故无法理解我需要将其传递给验证器的方式.
在Friend.h中
#ifndef FRIEND
#define FRIEND
class Friend
{
public:
static int i ;
int j;
Friend(void);
~Friend(void);
}frnd1;
#endif
Run Code Online (Sandbox Code Playgroud)
在Friend.cpp
#include "Friend.h"
int Friend::i = 9;
extern Friend frnd1;
Friend::Friend(void)
{
}
Friend::~Friend(void)
{
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中
#include <iostream>
using namespace std;
#include"Friend.h"
int main()
{
frnd1.j = 9;
cout<<"hello";
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,它给出了以下链接器错误:
error LNK2005: "class Friend frnd1" (?frnd1@@3VFriend@@A) already defined in main.obj
Run Code Online (Sandbox Code Playgroud)
我无法理解如何在main函数中使用全局对象.
坚持下去,这将是漫长的!在问我的问题之前,我需要先解释几件事.
根据C++标准(并且如本问题及其答案中所述),编译器应该在标识符(变量,函数等)的名称中支持Unicode(甚至更准确地说是源中的UTF-8)我知道Clang完全支持(我的意思是你可以使用UTF-8编码的源文件),GCC仅在你使用\u
标识符中的代码时支持它,但我们假设我们生活在一个完美的世界中,这在所有编译器上都能正常工作.
那样太好了!现在我不再需要用英语编写我的代码,最后可以用我的本地保加利亚语或者世界语来完成.毕竟,这就是标准要求的重点.除此之外还存在一个巨大的问题.让我们看一些(不是真正有意义的)代码:
首先使用英文标识符(ASCII):
int i = 0;
while(i < 100)
{
auto f = static_cast<float>(i);
std::string currentName = "name_" + toString(f);
std::cout << getPrettyName(currentName) << ": " << getSalary(currentName) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
然后在保加利亚语中使用标识符(因为它非常清楚地显示了问题):
int ? = 0;
while(? < 100)
{
auto ? = static_cast<float>(?);
std::string ????????? = "???_" + ????????????(?);
std::cout << ??????????(?????????) << ": " << ???????(?????????) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,由于关键字和标准库,第二个代码仍主要使用英语.有两个问题: