我正在使用stl unordered_map,我似乎无法使count方法起作用.这是我的计划:
typedef unordered_map<char, int> Mymap;
int main()
{
Mymap m;
m.insert(Mymap::value_type('a', 1));
m.insert(Mymap::value_type('b', 2));
m.insert(Mymap::value_type('c', 3));
m.insert(Mymap::value_type('b', 4));
m.insert(Mymap::value_type('b', 5));
cout << m.count('b') << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
unordered_map的文档说明了unordered_map::count(const Key& k)
返回带键的元素数k
.所以我希望这里的输出是3
,而真正的输出是1
.为什么?
我正在创建一个Web应用程序,它允许用户首先在客户端表单中"注册"架构,从而在我的服务器上创建自己的自定义MongoDB集合.
因此,用户将创建一个模式客户端 - 比如使用这样的表单:http://r.github.com/annotationsformatter/
因此客户端Js将生成表单的JSON对象,例如:
{
"collection_name": "person",
"data":
{
"name": "String",
"email": "String",
"id", "Number",
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,页面将此对象发送到服务器,服务器应该将内容转换data
为正确的Mongoose Schema并从中创建集合名称的集合person
.
我迷路了 - 我怎么会这样做?我在谈论转换到架构部分.
[编辑]:我使用一个非常具体的可重现的例子更新了上一个问题.
这是我的整个计划.
我创建了两个架构ASchema
和BSchema
与收藏A
,并B
分别使两个物体a
和b
,并尝试按顺序将它们保存-也就是说,第一a
则b
.
mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
ASchema = new Schema({
text: String
});
BSchema = new Schema({
val: Number
});
A = mongoose.model('A', ASchema);
B = mongoose.model('B', BSchema);
a = new A({text: 'this is a'});
b = new B({val: 5});
a.save(function(err) {
if(err) console.log(err.message);
else {
console.log('saved a : ', a);
b.save(function(err) {
if(err) console.log(err.message);
else {
console.log('saved b : …
Run Code Online (Sandbox Code Playgroud)