Как я могу получить ключи хеша node.js из модуля C ++?

0

У меня есть модуль C++, который вызывается из node.js. Я хотел бы передать хэш и получить ключи и значения из кода C++, но я не могу понять, как их получить. Вот что я хотел бы обработать:

var mod = require('MyModule')
var conn = mod.createConnection()
conn.connect( { 'uid': 'graeme',
                'pwd': 'mypassword' } )

Внутри моего метода C++ я могу использовать args[0]->IsObject() чтобы определить, что этот параметр является хэшем, но я не могу найти способ получить ключи ("uid", "pwd") или значения ('graeme', 'mypassword') из него.

Есть ли способ получить ключи и значения из этих объектов?

  • 0
    Зачем вам устанавливать параметры для такого массива? Затем вы просто добавляете произвольные атрибуты в пустой массив. cs['uid'] = 'graeme' не добавляет в массив, он присваивает атрибут тангенциально значениям в массиве.
  • 0
    @loganfsmyth Ах, спасибо за это. Я довольно новичок в Javascript и нашел код, похожий на тот, что где-то в Интернете. У меня сложилось впечатление, что второй код по сути создает такой же объект, как и первый.
Показать ещё 1 комментарий
Теги:

1 ответ

4
Лучший ответ

Ваш второй пример прохождения в массиве на самом деле не имеет смысла, но, к вашему общему мнению, вы можете использовать GetOwnPropertyNames для чтения имен свойств.

Local<Object> obj = args[0].As<Object>();
Local<Array> props = obj->GetOwnPropertyNames();

for (int i = 0, len = props->Length(); i < len; i++){
    Local<String> key = props->Get(i).As<String>();
    Local<Value> val = obj->Get(key);
}

эквивалентно:

var props = Object.getOwnPropertyNames(arguments[0]);
for (var i = 0, len = props.length; i < len; i++){
    var key = props[i];
    var value = arguments[0][key];
}
  • 0
    К сожалению, это то, что я получаю по памяти. Я обновил свой ответ и фактически проверил его сейчас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню