i am using special character $ in my Mongodb password.
this is how my connector looks like
{
"name": {
"host": "using ip here",
"port": 27017,
"url": "",
"database": "",
"password": "example123$",
"name": "name",
"user": "username",
"connector": "mongodb"
}
}
Error
Cannot initialize connector "mongodb": Password contains an illegal unescaped character
is there a way i can use special character in Loopback connector.
Try with %24. ie example123%24
%24 is the encoded value of $
const enc = encodeURIComponent('$')
console.log('Encoded Value :', enc)
Pls looking at issue #3764 on loopback Github.
https://github.com/strongloop/loopback/issues/3764
Related
I exported NODE_ENV=local and defined my mongo datasource as follows in datasources.local.json
"mongo": {
"host": "localhost",
"port": 27017,
"url": "mongodb://localhost:27017/mydb",
"database": "mydb",
"password": "",
"name": "mongo",
"user": "",
"connector": "mongodb"
},
But the database name is getting created as 'test'.I also tried in datasources.json but it's still the same. I need the database name to be 'mydb'. Please help
What fixed the problem for me was to set the name of the object to "db" and not "mongo" or "mongods".
"db": {
"host": "localhost",
"port": 27017,
"url": "mongodb://localhost:27017/mydb",
"database": "mydb",
"password": "",
"name": "mongo",
"user": "",
"connector": "mongodb"
},
I just got started using strapi framework and I would like to use mLab as my mongoDB database, so I go to configure strapi and fill the following details:
{
"defaultConnection": "default",
"connections": {
"default": {
"connector": "strapi-mongoose",
"settings": {
"client": "mongo",
"host": "localhost",
"port": 27017,
"database": "development",
"username": "",
"password": ""
},
"options": {}
}
}
}
The details I get from mLab are:
mongodb://myUsername:myPassword#ds047891.mlab.com:41365/myDatabase
Here is my final config:
{
"defaultConnection": "default",
"connections": {
"default": {
"connector": "strapi-mongoose",
"settings": {
"client": "mongo",
"host": "ds047891.mlab.com",
"port": 41365,
"database": "myDatabase",
"username": "myUsername",
"password": "myPassword"
},
"options": {}
}
}
}
When I try to start strapi, I get the following error:
DEBUG (2748 on DESKTOP-HAL1ATE): Server wasn't able to start properly.
ERROR (2748 on DESKTOP-HAL1ATE): (hook:mongoose) takes too long to load
I think that I did not setup my configuration right, but I can't pinpoint where the problem is. I hope someone could, thanks.
I am Pierre, on of the creators of Strapi. I tried with the following configuration and it worked well:
{
"defaultConnection": "default",
"connections": {
"default": {
"connector": "strapi-mongoose",
"settings": {
"client": "mongo",
"host": "ds135777.mlab.com",
"port": "35777",
"database": "myDatabase",
"username": "myUsername",
"password": "myPassword"
},
"options": {}
}
}
}
Our configurations files look quiet similar.
What file did you updated (/config/environment/development/database.json or /config/environment/production/database.json)?
Are you sure you entered the correct username and password? Did you try to login to your MongoDB instance through the command line mongo ds135777.mlab.com:35777/myDatabase -u <dbuser> -p <dbpassword>?
UPDATE
In version >= 3 for mlab don't forget to specify authenticationDatabase
"options": {
"authenticationDatabase": "your_mlad_database_name",
"ssl": false
}
I tried to follow this example
https://docs.strongloop.com/display/public/LB/Connector+hooks
var connector = MyModel.getDataSource().connector;
connector.observe('before execute', function(ctx, next) {
// ...
next();
});
But the property 'connector' seems to be undefined. I need to add a connector hook in the boot script. Any idea?
Use something like this to add a connector.
In server/datasource.json
{
"db": {
"host": "",
"port": 0,
"database": "",
"password": "",
"name": "db",
"connector": "memory",
"user": ""
},
"mongodb": {
"host": "0.0.0.0",
"port": 27017,
"database": "drugcorner",
"password": "12345",
"name": "mongodb",
"connector": "mongodb",
"user": "robins"
}
}
We have have MongoDb datasource datasource defined with name mongodb.
Now to use a connector for mongodb inside any boot files.
server/boot/testConnector.js
var mongoConnector = app.dataSources.mongodb.connector;
Sequlize throws an error while applying migrations.
# sequelize --config config/config.js -m
Loaded configuration file "config/config.js".
Loaded configuration file "config/config.js".
Unable to connect to database: Error: Failed to authenticate for MySQL. Please double check your settings.
Config.js
"db": {
"development": {
"username": "imvgm_dev",
"password": "imvgm_dev",
"database": "imvgm_development",
"host": "localhost"
},
"production": {
"username": "imvgm_production",
"password": "imvgm_production",
"database": "imvgm_production",
"host": "localhost"
},
"testing": {
"username": "imvgm_testing",
"password": "imvgm_testing",
"database": "imvgm_testing",
"host": "localhost"
}
I can easily connect to db through
mysql --host=localhost --user=imvgm_dev --password=imvgm_dev imvgm_development
any thoughts?
I think you need to add "port" to your config.js.
And you need not specify config.js in the command line. This should work:
# sequelize -m
I have started using CompoundJS with MongoDB as database.
I know i should do the host configuration in /config/database.json,
but not sure how i should add username/password for database configuration.
I tried to add username/password like below, but its not functional
{ "development":
{ "driver": "mongoose"
, "url": "mongodb://localhost/stats_development",
"username": "admin",
"password": "123456"
}
, "test":
{ "driver": "mongoose"
, "url": "mongodb://localhost/stats_test",
"username": "admin",
"password": "123456"
}
, "production":
{ "driver": "mongoose"
, "url": "mongodb://localhost/stats_production",
"username": "admin",
"password": "123456"
}
}
I found the solution..
mongodb://user:password#host:port/dbname
Thanks to Sagish, Reference : https://github.com/1602/compound/issues/377