web-dev-qa-db-ja.com

sailsjs v0.10を使用してmongodbに接続するにはどうすればよいですか?

現在、sailsjs v0.10を使用しています。 connections.jsとmodels.jsを構成し、connection: 'localMongodbServer'に変更します。インストールされたnpm install sails-mongo。

エラーを表示します。

 var des = Object.keys(dbs[collectionName].schema).length === 0 ?
                                          ^
TypeError: Cannot read property 'schema' of undefined

at Object.module.exports.adapter.describe (app1_test/node_modules/sails-mongo/lib/adapter.js:70:48)

Collections.jsをadapter.jsに変更するとエラーが表示される場合

  [err] In model (model1), invalid connection :: someMongodbServer
  [err] Must contain an `adapter` key referencing the adapter to use.
17
tajuddin

コードを見ずに、私はいくつかのことしか想定できません。

  1. 新しいsailsjs v0.10プロジェクトを開始しています
  2. 設定が正しく設定されていません。

これが当てはまらない場合は、回答を適切に更新できるようにお知らせください。


私はv0.10のボイラープレートを持っています。ボイラープレートにはいくつかの機能が組み込まれているので、それがどのように行われるかを確認できます。そのレポを見る ここ

connections.jsは適切なファイル名で、0.10で変更されています。

まず、sails-mongoがインストールされていることを確認します。

#From your project root run
npm install sails-mongo --save

次に、接続を定義し、デフォルトでモデルに使用するアダプターを帆に指示する必要があります。 connections.jsmodels.jsの例を次に示します。

connections.js

module.exports.connections = {
  mongodb: {
    adapter   : 'sails-mongo',
    Host      : 'localhost',
    port      : 27017,
    user      : '',
    password  : '',
    database  : 'yourdevdb'
  }
}

models.js

module.exports.models = {

  // Your app's default connection.
  // i.e. the name of one of your app's connections (see `config/connections.js`)
  //
  // (defaults to localDiskDb)
  connection: 'mongodb'
};

config/local.jsで接続を指定して、機密データをリポジトリにコミットしないようにすることもできます。これがあなたのやり方です。

local.jsconnections.jsで定義された内容をオーバーライドするため、すべての内容を指定する必要はありません。Sailsもそれらを組み合わせます。

local.js

module.exports = {
  connections: {
      mongodb: {
        Host      : 'localhost',
        port      : 27017,
        user      : '',
        password  : '',
        database  : 'yourdevdb'
      }
  }
}

異なるデータベースタイプと通信するために単一のモデルが必要な場合のために、単一のモデルでアダプタを定義することもできます。

これを行うには、モデルでadapter:を指定します。

module.exports = {
  adapter: 'myothermongodb',
},
config: {
  user: 'root',
  password: 'thePassword',
  database: 'testdb',
  Host: '127.0.0.1'
},
35
gorelative

V0.10で作業している場合、Githubのsails-mongoブランチからv0.10をインストールする必要があります。これは、WaterlineアダプターAPIがv0.10で変更されたためです。 package.json

"sails-mongo": "https://github.com/balderdashy/sails-mongo/archive/v0.10.tar.gz"

次にnpm installを実行します。

config/connections.jsではMongoDBアダプターを記述し、config/models.jsではこのアダプターを参照する必要があります。

それだけです。その後はsails liftが機能するはずです。

7
bredikhin