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

升级Sails从v0.12到v1后PostgreSQL出现Datastore和models未定义错误

解决Sails v0.12升级到v1后find方法的适配器错误

这个错误是因为Sails v1对ORM(Waterline)的核心架构做了重大调整,和v0.12的配置逻辑完全不同,导致适配器找不到必填的datastore和models配置。我来一步步帮你解决:

错误原因解析

Sails v0.12里的数据库连接配置直接在config/connections.js里设置,模型默认自动关联;但v1重构后,改用**datastore(数据存储)**来管理数据库连接,并且要求全局或模型级别明确指定datastore,同时全局models配置也必须包含必填项,否则适配器调用find这类方法时就会报错。

具体修复步骤

1. 配置全局Datastore

在config/datastores.js文件中(如果没有就新建一个),添加PostgreSQL的连接配置:

module.exports.datastores = {
  default: {
    adapter: 'sails-postgresql',
    // 可以用URL格式,或者分开配置下面的参数
    url: 'postgresql://你的用户名:你的密码@localhost:5432/你的数据库名',
    // host: 'localhost',
    // port: 5432,
    // user: '你的用户名',
    // password: '你的密码',
    // database: '你的数据库名'
  }
};

这里的default是默认数据存储,后续模型如果没有单独指定,就会使用这个配置。

2. 配置全局Models默认值

在config/models.js文件中,确保设置了datastore字段:

module.exports.models = {
  datastore: 'default', // 关联上面配置的默认datastore
  migrate: 'alter', // 根据你的需求选择:safe(不修改表结构)、alter(自动同步)、drop(每次重启删表重建)
  // 其他全局模型配置...
};

这一步是关键,全局配置会让所有模型默认继承这个datastore设置,避免每个模型都重复写。

3. 检查单个模型的配置(可选)

如果某个模型需要使用单独的datastore,在对应的模型文件(比如api/models/Users.js)里明确指定:

module.exports = {
  datastore: 'default', // 或者你自定义的其他datastore名称
  attributes: {
    // 你的模型字段定义...
  }
};

4. 验证依赖兼容性

确保你安装的sails-postgresql版本是兼容Sails v1的,建议安装最新的适配版本:

npm install sails-postgresql@latest --save

如果之前有旧版本残留,最好先删除node_modules和package-lock.json,重新安装依赖。

关于你添加的适配器打印

你在node_modules/sails-postgresql/lib/adapter里加的打印可以暂时保留,修复配置后,再次调用find方法时,应该能看到datastore和models参数被正确传入适配器,错误也就会消失了。

内容的提问来源于stack exchange,提问作者George Bell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:11:16