最近、私は小さな会社のWeb開発者チームによって作成されたSails.jsアプリケーションを引き継いだ。彼らは私にソースとデータベースダンプを提供しました。さて、私の仕事はそれを立ち上げてHerokuで動かすことです。Sails.js - リモートMongoDBのmLabでの認可に関する問題ローカルではうまく動作します
MongoError: not authorized on heroku_gbntc8sf to execute command { createIndexes: "agendaJobs", indexes: [ { key: { name: 1, priority: -1, lockedAt: 1, nextRunAt: 1, disabled: 1 }, name: "findAndLockNextJobIndex1" }, { key: { name: 1, lockedAt: 1, priority: -1, nextRunAt: 1, disabled: 1 }, name: "findAndLockNextJobIndex2" } ] }
at Function.MongoError.create ([ROOT_DIR]/node_modules/mongodb-core/lib/error.js:31:11)
at [ROOT_DIR]/node_modules/mongodb-core/lib/topologies/server.js:793:66
at Callbacks.emit ([ROOT_DIR]/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler ([ROOT_DIR]/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> ([ROOT_DIR]/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at Socket.Readable.push (_stream_readable.js:110:10)
at TCP.onread (net.js:523:20)
をここで私はすでにやったの迅速なチェックリストです:
- はすべてが大丈夫働いている間、私はローカルでアプリケーションを実行すると、リモート接続と言う起動時にエラーが発生しましたHerokuのビルドログをチェックしました - エラーも警告もありませんでした。
- mLab Herokuアドオンをセットアップし、データベースをエクスポートし、mLabダッシュボードからマニュアルチェックを行いました。
mongo
コマンドとURLmongo://
からデータベースにリモートログインし、簡単なクエリをいくつか実行し、データベースユーザー権限に関する情報を取得しました。- は、ローカルデータベースで同じユーザー(
heroku_gbntc8sf
ユーザー名、同じパスワード、同じ役割など)を作成しました。できるだけ多くの変数を排除するために、リモート・データベースに接続しようと、私はローカルサーバーを実行している現時点で// config/connections.js module.exports.connections = { mongodb: { adapter: 'sails-mongo', user: 'heroku_gbntc8sf', password: [HIDDEN], host: 'ds159387.mlab.com', port: 59387, database: 'heroku_gbntc8sf' }, // ... } // config/env/development.js module.exports = { models: { connection: 'mongodb' }, // ... } // config/env/production.js module.exports = { models: { connection: 'mongodb' }, // ... }
:ここ
は、接続構成は次のようになります。上記のように、host
を'127.0.0.1'
に、port
を27017
に設定すると、すべて正常に機能します。 heroku_gbntc8sf
ユーザーは、両方のデータベース(ローカルとリモート)で基本的なreadWrite
権限を持っています。実際、これらの2つのデータベースは、私が知る限りはほぼ同じです。それでも...
私は、Sails.jsのドキュメントと、sails-mongo
アダプタに関するドキュメントをかなり読んでいます。同様の質問を検索しましたが、関連するものは見つかりませんでした。私は、データベース接続を構成するいくつかの異なる方法を含め、多くの異なることを試しましたが、そのエラーは常に存在します。
私がStackOverflowに投稿している理由は、当時の当初の作者のサポートに頼ることができないからです。また、私はSails.jsを初めて使っているので、わかっていなくても何か間違ったことをしている可能性があります。私は、私の仕事がHerokuでアプリを起動するだけなので、アプリを「ブラックボックス」(または一般的なNodeアプリケーション)として扱うことで逃げることができると考えていました。
はあなたに男をありがとう! – krekto