首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在使用Node.js ORM Sequelize和它的命令行客户端,并且在成功执行迁移时遇到了困难

我正在使用Node.js ORM Sequelize和它的命令行客户端,并且在成功执行迁移时遇到了困难
EN

Stack Overflow用户
提问于 2015-05-31 11:32:07
回答 2查看 793关注 0票数 0

在我的应用程序中,我使用Sequelize-CLI设置表并运行到PostgreSQL数据库的迁移。下面是我的代码:

.sequelizerc

代码语言:javascript
复制
var path = require("path");

module.exports = {
  'config': path.resolve('config', 'database.json'),
  'migrations-path': path.resolve('db', 'migrate')
}

config/database.json

代码语言:javascript
复制
{
"development": {
    "username": "Sol",
    "password": null,
    "database": "experiments",
    "host": "127.0.0.1",
    "dialect": "postgres"
    },
"production": {
    "username": "Sol",
    "password": null,
    "database": "experiments",
    "host": "127.0.0.1",
    "dialect": "postgres"
    } 
}

我在models目录中创建了两个模型,并在db/migrate目录中使用sequelize migration:create创建了一个迁移文件。最后,我运行sequelize db:migrate来运行迁移,但是,当我检查PostgreSQL数据库时,没有创建新的表。在运行该命令后,我得到了以下响应:

代码语言:javascript
复制
Loaded configuration file "config/database.json".
Using environment "development".
    at new module.exports.Sequelize (/Users/Sol/src/projects/tests/Node.js/toVisit/node_modules/sequelize/lib/sequelize.js:182:13)
    at getSequelizeInstance (/usr/local/lib/node_modules/sequelize-cli/lib/tasks/db.js:203:10)
    at getMigrator (/usr/local/lib/node_modules/sequelize-cli/lib/tasks/db.js:208:21)
    at Object.module.exports.db:migrate.task (/usr/local/lib/node_modules/sequelize-cli/lib/tasks/db.js:23:7)
    at Gulp.gulp.task.aliases (/usr/local/lib/node_modules/sequelize-cli/lib/helpers/gulp-helper.js:14:14)
    at module.exports (/usr/local/lib/node_modules/sequelize-cli/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:34:7)
    at Gulp.Orchestrator._runTask (/usr/local/lib/node_modules/sequelize-cli/node_modules/gulp/node_modules/orchestrator/index.js:273:3)
    at Gulp.Orchestrator._runStep (/usr/local/lib/node_modules/sequelize-cli/node_modules/gulp/node_modules/orchestrator/index.js:214:10)
    at Gulp.Orchestrator.start (/usr/local/lib/node_modules/sequelize-cli/node_modules/gulp/node_modules/orchestrator/index.js:134:8)
    at /usr/local/lib/node_modules/sequelize-cli/node_modules/gulp/bin/gulp.js:129:20
    at process._tickCallback (node.js:419:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
    at node.js:906:3
EN

回答 2

Stack Overflow用户

发布于 2015-06-01 06:31:46

事实证明,问题出在Sequelize--CLI无法定位PostgreSQL,因为它没有安装必要的模块pgpg-hstore。我是在通过服务器以编程方式使用Sequelize时发现这一点的。它抛出了一个错误,其中的一部分可以在这里看到:

代码语言:javascript
复制
throw new Error('The dialect ' + this.getDialect() + ' is not supported.
        ^
Error: The dialect postgres is not supported. (Error: Cannot find module 'pg-hstore')

从那里,一个简单的谷歌搜索让我得到了更详细的解释,现在我可以成功地运行我的迁移了!

票数 2
EN

Stack Overflow用户

发布于 2016-11-24 06:16:33

安装pg-hstore

代码语言:javascript
复制
npm install pg-hstore --save

并在config/database.json中设置方言

代码语言:javascript
复制
 dialect: 'postgres'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30553555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档