You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:11:34