Thread overview
error connecting to mongodb atlas with vibe.d
Apr 30, 2022
notsteve
May 01, 2022
Tejas
May 01, 2022
Arjan
April 30, 2022

Hi,

I am trying to setup a simple webserver in D using vibe.d (0.9.4) and want to use mongoDB as a database. To achieve this, I've set up a mongoDB atlas instance with the following command inside the standard app.d file created by vibe.d

 string MongoURL = "mongodb://username:<password>@cluster0-shard-00-01.gaetq.mongodb.net:27017";

    auto client = connectMongoDB(MongoURL);

but am getting error [1] below.

Alternatively if I use the following path to the instance

    string MongoURL =       "mongodb://username:password@cluster0-shard-00-01.gaetq.mongodb.net:27017/myFirstDatabase?ssl=true&sslverifycertificate=false";

I get error [2].

I have tried accessing this instance using other programming languages and am not having any issues so am sure it is not an issue with the database instance. Does anyone have experience with this?

Error 1:

object.Exception@../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d(777): Reached end of stream while reading data.
----------------
source/app.d:29 pure @safe noreturn std.exception.bailOut!(Exception).bailOut(immutable(char)[], ulong, scope const(char)[]) [0x10af61e82]
/Library/D/dmd/src/phobos/std/exception.d:439 pure @safe bool std.exception.enforce!().enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong) [0x10af641ae]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d:777 @safe bool vibe.core.net.TCPConnection.read(scope ubyte[], eventcore.driver.IOMode).__lambda4!(core.time.Duration).__lambda4(core.time.Duration) [0x10b1f7d4b]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d:897 @safe void vibe.core.net.loopWithTimeout!(vibe.core.net.TCPConnection.read(scope ubyte[], eventcore.driver.IOMode).__lambda4, vibe.core.net.ReadTimeoutException).loopWithTimeout(core.time.Duration, immutable(char[])) [0x10b1f7bea]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d:773 @safe ulong vibe.core.net.TCPConnection.read(scope ubyte[], eventcore.driver.IOMode) [0x10b1f5b3e]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d:789 @safe void vibe.core.net.TCPConnection.read(scope ubyte[]) [0x10b1f5b80]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/internal/interfaceproxy.d:310 @safe void vibe.internal.interfaceproxy.InterfaceProxy!(vibe.core.stream.Stream).InterfaceProxy.ProxyImpl!(vibe.core.net.TCPConnection).ProxyImpl.__mixin8.__mixin3.__mixin3.__mixin3.__mixin3.__mixin2.read(void[], scope ubyte[]) [0x10af67273]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/internal/interfaceproxy.d:199 @safe void vibe.internal.interfaceproxy.InterfaceProxy!(vibe.core.stream.Stream).InterfaceProxy.__mixin22.__mixin3.__mixin3.__mixin3.__mixin3.__mixin2.read(scope ubyte[]) [0x10af661e9]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:538 @safe void vibe.db.mongo.connection.MongoConnection.recv(ubyte[]) [0x10afab0b2]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:523 @safe int vibe.db.mongo.connection.MongoConnection.recvInt() [0x10afaad11]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:437 @safe int vibe.db.mongo.connection.MongoConnection.recvReply!(vibe.data.bson.Bson).recvReply(int, scope void delegate(long, vibe.db.mongo.flags.ReplyFlags, int, int) @safe, scope void delegate(ulong, ref vibe.data.bson.Bson) @safe) [0x10afaed2b]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:322 @safe void vibe.db.mongo.connection.MongoConnection.query!(vibe.data.bson.Bson).query(immutable(char)[], vibe.db.mongo.flags.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson, scope void delegate(long, vibe.db.mongo.flags.ReplyFlags, int, int) @safe, scope void delegate(ulong, ref vibe.data.bson.Bson) @safe) [0x10afaf5d3]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:223 @safe void vibe.db.mongo.connection.MongoConnection.connect() [0x10afa941a]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:64 @safe vibe.db.mongo.connection.MongoConnection vibe.db.mongo.client.MongoClient.__ctor(immutable(char)[]).__lambda4() [0x10af802e7]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/connectionpool.d:94 @safe vibe.core.connectionpool.LockedConnection!(vibe.db.mongo.connection.MongoConnection).LockedConnection vibe.core.connectionpool.ConnectionPool!(vibe.db.mongo.connection.MongoConnection).ConnectionPool.lockConnection() [0x10af80e17]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:170 @safe vibe.core.connectionpool.LockedConnection!(vibe.db.mongo.connection.MongoConnection).LockedConnection vibe.db.mongo.client.MongoClient.lockConnection() [0x10af80670]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:71 @safe vibe.db.mongo.client.MongoClient vibe.db.mongo.client.MongoClient.__ctor(immutable(char)[]) [0x10af80263]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/mongo.d:89 @safe vibe.db.mongo.client.MongoClient vibe.db.mongo.mongo.connectMongoDB(immutable(char)[]) [0x10afc030e]
source/app.d:11 _Dmain [0x10af61ae9]
Program exited with code 1

Error 2:

object.Exception@../../../.dub/packages/vibe-d-0.9.4/vibe-d/data/vibe/data/bson.d(813): BSON value is type 'int_', expected to be one of [double_]
----------------
../../../.dub/packages/vibe-d-0.9.4/vibe-d/data/vibe/data/bson.d:813 const @safe void vibe.data.bson.Bson.checkType(in vibe.data.bson.Bson.Type[]...) [0x1099bbff5]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/data/vibe/data/bson.d:396 const @property @safe double vibe.data.bson.Bson.get!(double).get() [0x10980a7d6]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:640 @safe void vibe.db.mongo.connection.MongoConnection.scramAuthenticate().__lambda8!(ulong, vibe.data.bson.Bson).__lambda8(ulong, ref vibe.data.bson.Bson) [0x109802a5c]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:477 @safe int vibe.db.mongo.connection.MongoConnection.recvReply!(vibe.data.bson.Bson).recvReply(int, scope void delegate(long, vibe.db.mongo.flags.ReplyFlags, int, int) @safe, scope void delegate(ulong, ref vibe.data.bson.Bson) @safe) [0x109804f15]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:322 @safe void vibe.db.mongo.connection.MongoConnection.query!(vibe.data.bson.Bson).query(immutable(char)[], vibe.db.mongo.flags.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson, scope void delegate(long, vibe.db.mongo.flags.ReplyFlags, int, int) @safe, scope void delegate(ulong, ref vibe.data.bson.Bson) @safe) [0x1098055a3]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:634 @safe void vibe.db.mongo.connection.MongoConnection.scramAuthenticate() [0x1098023e5]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/connection.d:269 @safe void vibe.db.mongo.connection.MongoConnection.connect() [0x1097ff75a]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:64 @safe vibe.db.mongo.connection.MongoConnection vibe.db.mongo.client.MongoClient.__ctor(immutable(char)[]).__lambda4() [0x1097d62b7]
../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/connectionpool.d:94 @safe vibe.core.connectionpool.LockedConnection!(vibe.db.mongo.connection.MongoConnection).LockedConnection vibe.core.connectionpool.ConnectionPool!(vibe.db.mongo.connection.MongoConnection).ConnectionPool.lockConnection() [0x1097d6de7]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:170 @safe vibe.core.connectionpool.LockedConnection!(vibe.db.mongo.connection.MongoConnection).LockedConnection vibe.db.mongo.client.MongoClient.lockConnection() [0x1097d6640]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/client.d:71 @safe vibe.db.mongo.client.MongoClient vibe.db.mongo.client.MongoClient.__ctor(immutable(char)[]) [0x1097d6233]
../../../.dub/packages/vibe-d-0.9.4/vibe-d/mongodb/vibe/db/mongo/mongo.d:89 @safe vibe.db.mongo.client.MongoClient vibe.db.mongo.mongo.connectMongoDB(immutable(char)[]) [0x1098162de]
source/app.d:11 _Dmain [0x1097b7a9d]
Program exited with code 1
May 01, 2022

On Saturday, 30 April 2022 at 14:29:56 UTC, notsteve wrote:

>

Hi,

I am trying to setup a simple webserver in D using vibe.d (0.9.4) and want to use mongoDB as a database. To achieve this, I've set up a mongoDB atlas instance with the following command inside the standard app.d file created by vibe.d

[...]

Don't know if this will help or not, but someone wrote a book explaining vibed (and it's pretty recent too), maybe it'll contain some info regarding your issue

https://github.com/reyvaleza/vibed/blob/main/BuildWebAppsinVibe.pdf

Hope it helps!

May 01, 2022

On Saturday, 30 April 2022 at 14:29:56 UTC, notsteve wrote:

>

Hi,

I am trying to setup a simple webserver in D using vibe.d (0.9.4) and want to use mongoDB as a database. To achieve this, I've set up a mongoDB atlas instance with the following command inside the standard app.d file created by vibe.d

 string MongoURL = "mongodb://username:<password>@cluster0-shard-00-01.gaetq.mongodb.net:27017";

    auto client = connectMongoDB(MongoURL);

but am getting error [1] below.

Alternatively if I use the following path to the instance

    string MongoURL =       "mongodb://username:password@cluster0-shard-00-01.gaetq.mongodb.net:27017/myFirstDatabase?ssl=true&sslverifycertificate=false";

I get error [2].

I have tried accessing this instance using other programming languages and am not having any issues so am sure it is not an issue with the database instance. Does anyone have experience with this?

Error 1:

object.Exception@../../../.dub/packages/vibe-core-1.22.3/vibe-core/source/vibe/core/net.d(777): Reached end of stream while reading data.
----------------

https://github.com/vibe-d/vibe-core/blob/v1.22.3/source/vibe/core/net.d#L777

Apparently, no data is received anymore within the remaining time duration.

>

Error 2:

object.Exception@../../../.dub/packages/vibe-d-0.9.4/vibe-d/data/vibe/data/bson.d(813): BSON value is type 'int_', expected to be one of [double_]

https://github.com/vibe-d/vibe.d/blob/v0.9.4/data/vibe/data/bson.d#L813

There is clearly something wrong with the type expected and provided. Check the schemes/layouts.