2017-01-04 2 views
1

最近、私は小さな会社の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コマンドとURL mongo://からデータベースにリモートログインし、簡単なクエリをいくつか実行し、データベースユーザー権限に関する情報を取得しました。
  • は、ローカルデータベースで同じユーザー(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'に、port27017に設定すると、すべて正常に機能します。 heroku_gbntc8sfユーザーは、両方のデータベース(ローカルとリモート)で基本的なreadWrite権限を持っています。実際、これらの2つのデータベースは、私が知る限りはほぼ同じです。それでも...

私は、Sails.jsのドキュメントと、sails-mongoアダプタに関するドキュメントをかなり読んでいます。同様の質問を検索しましたが、関連するものは見つかりませんでした。私は、データベース接続を構成するいくつかの異なる方法を含め、多くの異なることを試しましたが、そのエラーは常に存在します。

私がStackOverflowに投稿している理由は、当時の当初の作者のサポートに頼ることができないからです。また、私はSails.jsを初めて使っているので、わかっていなくても何か間違ったことをしている可能性があります。私は、私の仕事がHerokuでアプリを起動するだけなので、アプリを「ブラックボックス」(または一般的なNodeアプリケーション)として扱うことで逃げることができると考えていました。

答えて

1

は、私は正常最近セイルプロジェクトでMLABを使用しましたが、それは場合に役立ちます私は

mongodbServer: { 
     adapter: 'sails-mongo', 
     url : "mongodb://dandanknight:[email protected]:44979/databasename" 
    } 

わからない...例えば、モンゴのURL文字列の形式を使用しましたが、傷つけることはできません試してみて!私は偶然にもSailsで正常に動作するレプリカセットを得た唯一の方法です。

それは混乱だが、「URLが進むべき道である、オブジェクトを渡すと、従来の使用法である」(here)として、私は帆-モンゴのドキュメントを読んで

+0

はあなたに男をありがとう! – krekto

関連する問題