我正在使用mongocxx驱动程序,我正在尝试对集合进行基本插入。
如果我只是遵循here提供的指南,它就可以正常使用。
但是,如果我将db和collection实例放在一个对象中,那么插件会在运行时崩溃。所以,举一个简单的例子,我有一个包含数据库和集合实例的结构,并尝试在main()中创建Thing实例后通过这些实例进行插入:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(Uri.parse(url).getHost().endsWith("192.168.1.34")) {
view.loadUrl(url);
Log.d("URL => ", url); // load URL in webview
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent); // Pass it to the system, doesn't match your domain
return true;
}
我意识到这可以通过在main中启动数据库和集合并仅在Thing中存储指向集合的指针来解决。 然而,我想知道崩溃的原因,以及是否有可能将db一个集合实例放在一个对象中。
答案 0 :(得分:2)
我认为问题可能是在mongocxx::instance inst{};
的堆栈上创建的open_connection
,因此在open_connection
结束时,inst
被破坏,某些数据可能会变得未定义。
生命周期:必须保持驱动程序的唯一实例。
将inst
移至主要功能。