如何使用sailsjs v0.10连接mongodb?
Posted
技术标签:
【中文标题】如何使用sailsjs v0.10连接mongodb?【英文标题】:How to connect with mongodb using sailsjs v0.10? 【发布时间】:2014-03-03 03:05:37 【问题描述】:现在使用sailsjs v0.10 。 配置connections.js和models.js,改成connection:'localMongodbServer',安装npm installsails-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.
【问题讨论】:
【参考方案1】:没有看到代码,我只能假设一些事情。
-
您正在启动一个新的sailsjs v0.10 项目
您的配置设置不正确。
如果不是这样,请告诉我,以便我可以适当地更新答案。
我有一个 v0.10 的样板,其中包含一些内容,因此您可以看到它是如何完成的。查看那个 repo here
connections.js
是适当的文件名,它在0.10
中已更改。
首先确保安装了sails-mongo。
#From your project root run
npm install sails-mongo --save
接下来您需要定义您的连接,并告诉sails 默认使用什么适配器用于模型。这是connections.js
和models.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.js
将覆盖connections.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'
,
【讨论】:
这适用于 0.9.11 吗? 谢谢,这对我很有帮助,因为在 0.10.x 上还没有关于此的文档。 如何设置生产数据库?【参考方案2】:如果您使用的是 v0.10,则需要从 Github 上的 v0.10
分支安装 sails-mongo
,因为在 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
应该在那之后工作。
【讨论】:
以上是关于如何使用sailsjs v0.10连接mongodb?的主要内容,如果未能解决你的问题,请参考以下文章
SailsJS - 将sails.io.js 与JWT 一起使用