2017-04-08 1 views
0

nodejs 용 C++ 모듈이 있습니다. 메서드의 인수로 키/값 쌍을 받아 들일 필요가 있습니다.nodejs C++ 모듈에서 map 인수를 처리하는 방법

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

Handle<Map> map = Handle<Map>::cast(args[0]); 

그리고 속성을 사용 : 당신이 확실한 경우

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? 
} 

답변

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)); 
} 
0

는 당신이 코드를 통해 검색 할 수 있습니다, Map 객체이다 :이 후 무엇을 할

확실하지 않음 지도의 속성.

희망이 도움이됩니다.

+0

자바 스크립트 코드는 다음입니다 : var에 my_map = { '키 1': '값 1', '키 2': '값 2'}; \t 지도 객체입니까? IsMap()에서는 실패하지만 IsObject()에서는 true를 반환합니다. – Sharath

+0

나는 최근 조사 결과를 업데이트했다. – Sharath

관련 문제