如何在Sails.js中使用多数据库连接?含MySQL新增MongoDB场景
在Sails.js中配置并使用多数据库(MySQL + MongoDB)
嘿,作为Sails.js新手要同时搞定MySQL和MongoDB的多数据库连接完全没问题,我一步步给你捋清楚操作流程:
1. 安装MongoDB适配器
Sails.js默认用sails-mysql适配你的MySQL数据库,现在需要安装MongoDB对应的适配器:
npm install sails-mongo --save # 或者用 yarn yarn add sails-mongo
2. 配置多数据存储连接
打开项目根目录下的config/datastores.js,在现有MySQL配置的基础上,新增MongoDB的连接配置。这里你可以用URL格式,也可以拆分单独的参数:
module.exports.datastores = { // 原有的MySQL默认连接 default: { adapter: 'sails-mysql', url: 'mysql://你的MySQL用户名:密码@localhost:3306/你的MySQL数据库名', // 如果你不习惯URL格式,也可以拆成单独参数: // user: '你的MySQL用户名', // password: '你的MySQL密码', // host: 'localhost', // port: 3306, // database: '你的MySQL数据库名' }, // 新增的MongoDB连接,命名为mongodb(你可以自定义名字) mongodb: { adapter: 'sails-mongo', url: 'mongodb://你的MongoDB用户名:密码@localhost:27017/你的MongoDB数据库名', // 同样支持拆分参数: // user: '你的MongoDB用户名', // password: '你的MongoDB密码', // host: 'localhost', // port: 27017, // database: '你的MongoDB数据库名' } };
3. 给模型指定对应的数据库
接下来,你需要告诉每个模型该用哪个数据库连接。比如:
- 原来的MySQL模型保持默认(或者显式指定
datastore: 'default') - 新创建的MongoDB模型,在模型文件里添加
datastore字段指定为我们刚才配置的mongodb
举个例子,创建一个Product模型(api/models/Product.js)用于MongoDB:
module.exports = { // 指定使用mongodb连接 datastore: 'mongodb', attributes: { name: { type: 'string', required: true }, price: { type: 'number' }, description: { type: 'string' } } };
4. 在控制器中操作不同数据库的模型
配置完成后,操作模型和平时完全一样,Sails会自动根据模型指定的datastore连接对应的数据库。比如在控制器里:
// 操作MySQL的User模型 async function fetchUsers(req, res) { const users = await User.find(); return res.json(users); } // 操作MongoDB的Product模型 async function fetchProducts(req, res) { const products = await Product.find(); return res.json(products); }
一些注意事项
- 主键差异:MongoDB默认主键是
_id(字符串类型),而MySQL默认是自增整数id。如果需要统一主键格式,可以在MongoDB模型里配置:module.exports = { datastore: 'mongodb', attributes: { id: { type: 'string', columnName: '_id' }, // 其他字段... } }; - 字段类型适配:MongoDB和MySQL的字段类型有些差异,比如MongoDB没有严格的整数/浮点数区分,使用时尽量保持模型字段类型和数据库存储匹配。
内容的提问来源于stack exchange,提问作者fariba.j
相关产品推荐
相关产品推荐

