У меня была аналогичная проблема с использованием ggmap::geocode()
для партии мест, где примерно 20% местоположений дали ошибку OVER QUERY LIMIT, даже если geocodeQueryCheck()
будет показывать более чем достаточно запросов на геокодирование, и ошибки были спорадически разбросаны по всему места, а не только последние 20%. Если я повторю подмножество местоположений, которые не выполнялись в первый раз, снова большинство из них работало, поэтому мне пришлось перебирать меньшие подмножества, пока у всех не было геокодов.
ggmap v2.7 позволяет пользователю указать ключ API Карт Google через функцию register_google()
. v2.7 еще не включен в CRAN, поэтому вам нужно использовать devtools::install_github("dkahle/ggmap")
для его установки. После обновления до этой версии и установки моего API-ключа register_google(key = "my_api_key")
одна и та же партия работала в одном прогоне, как и ожидалось.
Ключ API Карт Google легко получить: https: // разработчики. google.com/maps/documentation/geocoding/get-api-key
использовать pwd вместо этого, который работал для меня для версии3.2
mongoose.connect('mongodb://localhost/test',
{user: 'username', pwd: 'p@ssword'},
callback);
иногда вам нужно подключиться к БД с помощью других инструментов , которые принимают строку только как строку подключения. поэтому просто измените знак @ на% 40
Если ваш пароль имеет специальные символы:
const dbUrl = `mongodb://adminUsername:${encodeURIComponent('adminPassword')}@localhost:27017/mydb`;
Используйте параметр options
для вызова mongoose.connect
, чтобы указать пароль, а не включать его в строку URL:
mongoose.connect('mongodb://localhost/test',
{user: 'username', pass: 'p@ssword'},
callback);
Also, if your password contains a percentage, %,
Because the percent ("%") character serves as the indicator for percent-encoded octets, it must be percent-encoded as "%25" for that octet to be used as data within a URI
for example, if your password is John%Doe, the new transformed password will be John%25Doe or
If password is Paul%20Wait, New Password will be Paul%2520Wait
mongoClient.connect("mongodb://username:John%25Doe@host:port/dbname", function(err, db) {
// password is John%Doe
}`enter code here`
);
Используйте этот синтаксис, не забудьте параметр uri_decode_auth
.
mongoClient.connect("mongodb://username:p%40ssword@host:port/dbname", {
uri_decode_auth: true
}, function(err, db) {
}
);
{uri_decode_auth: true}
, но это сработало, как только я это заметил. Благодарю.
– Mark Rendle
23 July 2015 в 17:08
{uri_decode_auth: true}
следует передавать как отдельный объект, если вы находитесь в NodeJS и используете собственный драйвер mongoDB.
– Koushik Shom Choudhury
2 August 2018 в 15:01
Я также столкнулся с той же проблемой. Я решил, добавив закодированный пароль в строку подключения. И это хорошо работает.
(1) Кодируйте свой пароль с https://www.url-encode-decode.com (2) Замените свой пароль на закодированный. (3) Он должен хорошо работать.
Например: Фактический пароль: ABCDEX $ KrrpvDzRTy` @ drf. '; 3X Encoded Password: ABCDEX% 24KrrpvDzRTy% 60% 40drf.% 27% 3B3X
MongoDB: // user1: ABCDEX%24KprpvDzRTy%60%40drf.%27%3B3X@dstest.com: 1234, ds1234-test.com: 19889 / монго-DEV replicaSet = RS-ds123546978 & амп; = SSL правда» ,
Ни одно из упомянутых выше решений не помогло мне. Я исследовал его дальше и выяснил, что мне нужно включить параметр useNewUrlParser.
mongoose.connect(db, {
useNewUrlParser : true
},
err => {
if (err){
console.error('Error: ' + err)
}
else{
console.log('Connected to MongoDb')
}
})
Из того, что я понимаю, для этого вам нужна конкретная версия MongoDB. Для получения дополнительной информации проверьте Избегайте предупреждения «текущий синтаксический анализатор URL-адресов устарел», установив useNewUrlParser в true
. Чтобы избавиться от предупреждения, но, очевидно, версия также влияет на требуемый параметр.
Я не тестировал все специальные символы, но определенно работает с «@ # $».
Надеюсь, это поможет.
Попробуйте это, мои друзья:
mongoose.connect("mongodb://localhost:27017/test?authSource=admin",
{user: 'viettd', pass: 'abc@123'});
test
- мое имя db admin
- мой db для аутентификации viettd
- мое имя пользователя abc@123
- мой пароль