如何在nodejs C++;模块 我有一个用于NoDEJs的C++模块。我需要接受一个键/值对作为方法的参数

如何在nodejs C++;模块 我有一个用于NoDEJs的C++模块。我需要接受一个键/值对作为方法的参数,c++,node.js,v8,C++,Node.js,V8,var my_map={'key1':'value1','key2':'value2'} 不确定在此之后要做什么: void MyClient::AcceptData(const FunctionCallbackInfo<Value>& args) { Isolate* isolate = args.GetIsolate(); if (args.Length() != 1) { isolate->ThrowException(v

var my_map={'key1':'value1','key2':'value2'}

不确定在此之后要做什么:

void MyClient::AcceptData(const FunctionCallbackInfo<Value>& args)
{
    Isolate* isolate = args.GetIsolate();

    if (args.Length() != 1)
    {
        isolate->ThrowException(v8::Exception::TypeError(String::NewFromUtf8(isolate,
            "Usage: Key/Value Map")));
        return;
    }
// It returns true for args[0]->isObject(), but not for args[0]->IsMap()

// Now what? How do I get a C++ map out of args[0] ?
// What do I cast it into?
}
void MyClient::AcceptData(常量函数callbackinfo&args)
{
隔离*隔离=args.GetIsolate();
如果(参数长度()!=1)
{
隔离->ThroweException(v8::Exception::TypeError(字符串::NewFromUtf8)(隔离,
“用法:键/值映射”);
返回;
}
//对于args[0]->isObject(),它返回true,但对于args[0]->IsMap()则不返回true
现在怎么样?我如何从ARGS(0)中得到C++图?
//我把它投进什么?
}

如果您确定它是地图对象,可以通过以下代码检索它:

Handle<Map> map = Handle<Map>::cast(args[0]);
handlemap=Handle::cast(args[0]);
然后使用地图的属性和属性


希望这有帮助。

好的,我找到了答案

v8::Local<v8::Object> obj = args[0]->ToObject();
v8::Local<v8::Array> props = obj->GetPropertyNames();
std::map<std::string, std::string> theMap;
for (unsigned int i = 0; i < props->Length(); i++)
{
    char key[1000], value[1000];
    props->Get(i)->ToString()->WriteUtf8(key, 1000);
    obj->Get(props->Get(i))->ToString()->WriteUtf8(value, 1000);
    theMap.insert(std::make_pair(key, value));
}
v8::Local obj=args[0]->ToObject();
v8::Local props=obj->GetPropertyNames();
std::映射主题图;
对于(无符号整数i=0;iLength();i++)
{
字符键[1000],值[1000];
道具->获取(i)->ToString()->WriteUtf8(键,1000);
obj->Get(props->Get(i))->ToString()->WriteUtf8(值,1000);
插入映射(std::make_pair(key,value));
}

javascript代码如下:var my_map={'key1':'value1','key2':'value2'};那是地图对象吗?它使IsMap()失败,但为IsObject()返回true。