现在使用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.
答案 0 :(得分:35)
没有看到代码,我只能假设一些事情。
如果不是这种情况,请告诉我,以便我能够恰当地更新答案。
我有一个v0.10的样板,里面有一些东西,所以你可以看看它是如何完成的。请参阅回购here
connections.js
是适当的文件名,已在0.10
中更改。
首先确保安装了sails-mongo。
#From your project root run
npm install sails-mongo --save
接下来,您需要定义连接,并告诉sails默认情况下用于模型的适配器。以下是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'
},
答案 1 :(得分:7)
如果您使用的是v0.10,则需要在Github上的sails-mongo
分支上安装v0.10
,因为在v0.10中更改了Waterline适配器API。在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
应该在那之后起作用。