我这样做是为了拥有一个使用 nodejs 附加组件的 MongoDB nodejs 驱动程序包装器。我想创建一个包装器来消除异步性质。可悲的是,上述驱动程序没有“同步”选项。
我尝试构建 mongodb c 驱动程序和 mongodb c++ 驱动程序,但没有运气。
这是我的问题:如何将字符串 javascript 函数体解析为 v8 函数?
我有这个代码
//args[0] is from the parameter: const FunctionCallbackInfo<Value>& args
Local<ObjectTemplate> global_templ = ObjectTemplate::New();
global_templ->Set(String::NewFromUtf8(isolate, "db"), args[0]);
Local<Context> context = Context::New(isolate, NULL, global_templ);
string str1 = "";
str1 += "if(!(db.serverConfig.isConnected && db.serverConfig.isConnected())) ";
str1 += " return false;";
str1 += "else";
str1 += " return true;";
const char * str2 = str1.c_str();
context->Enter();
Local<String> source = String::NewFromUtf8(isolate, str2);
Local<Script> script = Script::Compile(source);
Local<Value> result = script->Run();
args.GetReturnValue().Set(result);
context->Exit();
这会产生一个错误:Illegal return statement 我断定我必须把这个函数。
Local<FunctionTemplate> func = FunctionTemplate::New(isolate);
我不知道如何将函数体解析为模板。:'(
PS:我是新手,所以请让newb这个词友好。哈哈。哈哈