Sails 通过 sails-mongo 适配器 支持流行的 MongoDB 数据库。
首先,确保您可以访问运行中的 MongoDB 服务器,无论是您的开发机器还是云端。下面,'mongodb://root@localhost/foo' 指的是使用“foo”作为数据库名称的本地安装的 MongoDB。请务必将该 连接 URL 替换为您的数据库的相应字符串。
在开发过程中,要在您的 Node.js/Sails 应用程序中使用 MongoDB
npm install sails-mongo
。在您的 config/datastores.js
文件中,编辑 default
数据存储配置
default: {
adapter: 'sails-mongo',
url: 'mongodb://root@localhost/foo'
}
在您的 config/models.js
文件中,编辑默认的 id
属性,使其具有适合 MongoDB 主键的 type
和 columnName
attributes: {
id: { type: 'string', columnName: '_id' },
//…
}
就是这样!再次启动您的应用程序,您应该就可以运行了。
配置完您的项目以使用 MongoDB 后,您可能会注意到您的 Waterline 查询 默认情况下区分大小写。要执行不区分大小写的查询,可以使用 .meta({makeLikeModifierCaseInsensitive: true})
。
要在生产环境中使用 MongoDB,请在 config/env/production.js
中编辑您的适配器设置
adapter: 'sails-mongo',
您也可以配置您的 连接 URL —— 但是许多开发人员更喜欢不要将敏感凭据检入版本控制系统。另一个选择是使用环境变量
sails_datastores__default__url=mongodb://heroku_12345678:[email protected]:29017/heroku_12345678
要在暂存环境中使用 MongoDB,请编辑
config/env/staging.js
。根据您的应用程序,将您的暂存数据库凭据检入版本控制系统是可以接受的,因为它们的安全风险较小。
与所有 Sails 数据库适配器 一样,在使用 sails-mongo
时,您可以使用任何 Waterline 模型方法 与您的模型进行交互。
对于许多应用程序来说,这就是您需要的全部内容——从“hello world”到生产环境。即使遇到限制,通常也可以通过不编写特定于 Mongo 的代码来解决。但是,在没有其他选择的情况下,可以在您的 Sails 应用程序中直接使用 Mongo 驱动程序。
要直接访问低级“本机”MongoDB 客户端,请使用 .manager
属性,该属性是 数据存储实例。
从 sails-mongo
v2.0.0 及更高版本开始,您可以通过 manager.client
访问 MongoClient
对象。这使您可以访问最新的 MongoDB 改进,例如 ClientSession
,以及事务、变更流 和其他新功能。
var mongoClient = Pet.getDatastore().manager.client;
var results = await mongoClient.db('test')
.collection('pet')
.find({}, { name: 1 })
.toArray();
console.log(results);
有关本机 MongoDB 客户端中可用方法的完整列表,请参阅 Node.js MongoDB 驱动程序 API 参考。