現在、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.
コードを見ずに、私はいくつかのことしか想定できません。
これが当てはまらない場合は、回答を適切に更新できるようにお知らせください。
私はv0.10のボイラープレートを持っています。ボイラープレートにはいくつかの機能が組み込まれているので、それがどのように行われるかを確認できます。そのレポを見る ここ
connections.js
は適切なファイル名で、0.10
で変更されています。
まず、sails-mongoがインストールされていることを確認します。
#From your project root run
npm install sails-mongo --save
次に、接続を定義し、デフォルトでモデルに使用するアダプターを帆に指示する必要があります。 connections.js
とmodels.js
の例を次に示します。
module.exports.connections = {
mongodb: {
adapter : 'sails-mongo',
Host : 'localhost',
port : 27017,
user : '',
password : '',
database : 'yourdevdb'
}
}
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.js
はconnections.js
で定義された内容をオーバーライドするため、すべての内容を指定する必要はありません。Sailsもそれらを組み合わせます。
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'
},
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
が機能するはずです。