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: 私は初心者なので、初心者にわかりやすい言葉にしてください。笑。笑