1

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

4

0 に答える 0