如题,本人刚刚接触nodejs,要把之前的c++项目功能移植到nodejs项目中,我在nodejs项目中用到了c++ addon,实现一些底层的功能。其中一个c++函数是获取了系统的所有用户名,返回值为vector<string>,请问如何将这个返回值在nodejs中进行接收和使用?如果返回类型为vector<struct MyStruct*>,又该如何传递和使用?谢谢各位大神!
ps:考虑过把vector<string>里的所有string 拼接成一个超长的string,在js中再拆分,但是觉得并不解决根本问题,如果传别的如struct之类的数据类型还是不好使,因此主要是想问问如何把c++的这些数据类型和v8的数据类型对应上,并且在js里能够比较容易的应用起来。
代码:
binding.cc文件:
void GetAllUsersCC(const v8::FunctionCallbackInfov8::Value& args){
v8::Isolate* isolate = args.GetIsolate();
v8::HandleScope scope(isolate);
vector<string> users = GetAllUser(); //要传递的返回值,已经验证了返回值的正确性
// args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, user.c_str())); 这是之前返回单一用户名称的时候的方法
}
void init(v8::Localv8::Object target) {
NODE_SET_METHOD(target, “GetAllUsers”, GetAllUsersCC);
}
在js中调用: binding.GetAllUsers();
举个栗子: 数组:v8中为Array
Local<Array> array = Array::New(isolate,2);
array->Set(0,Integer::New(isolate,2));
array->Set(1,Integer::New(isolate,6));
更多详细内容请阅读v8.h相关内容 https://v8docs.nodesource.com/node-5.0/d4/da0/v8_8h.html
楼上正解。