Sequelize .sync 函数挂起:来自 serial.klass 的发射器
Posted
技术标签:
【中文标题】Sequelize .sync 函数挂起:来自 serial.klass 的发射器【英文标题】:Sequelize .sync function hangs: emitter from serial.klass 【发布时间】:2013-08-23 17:21:47 【问题描述】:我从我们的暂存环境中提取了一个应用程序,该应用程序在暂存计算机上完美运行,但在本地它挂在 sequelize.sync
函数上。
应用程序甚至没有到达“正在侦听端口...”
我通过Sequelize中的同步功能登录,发现这是卡住的地方:
(query-chainer.js 中的第 79 - 88 行)
var emitter = serial.klass[serial.method].apply(serial.klass, serial.params)
emitter.success(function(result)
self.serialResults[serialCopy.indexOf(serial)] = result
if (serial.options.success)
serial.options.success(serial.klass, onSuccess)
else
onSuccess()
).error(onError)
此函数不会返回到success
或error
。我不应该对他们的代码进行任何更改,因为我知道他们的库正在工作——我有一个可以工作的本地副本,我们正在重构,我只需要临时副本在我们完成时对生产进行快速更改重构。
有什么变化会导致这个问题?好像是连接问题?
我已验证主机为localhost
,端口为5432
。正确的username
、password
和dbName
。全部通过:
sequelize = new Sequelize(config.db.dbName, config.db.username, config.db.password,
dialect: 'postgres',
host: config.db.host,
port: config.db.port,
logging: false,
define: sequelizeMethods
);
我还确认postgresql-x64-9.2 - PostgreSQL Server 9.2
服务正在运行。
有人对如何解决这个问题有任何想法吗?或者获取更多信息的方法?
【问题讨论】:
【参考方案1】:您可以使用psql -d <dbname> -h localhost -U <username> -W
连接吗?
是否安装了pg@~2.0.0
?如果是这样,它是安装在您的机器上还是只是通过node_modules
拉入的?
您是否尝试过npm install sequelize-postgres
并使用:
var Sequelize = require('sequelize-postgres').sequelize
var postgres = require('sequelize-postgres').postgres
var sequelize = new Sequelize('database', 'username', 'password',
dialect: 'postgres'
)
postgresql 有日志输出吗?
【讨论】:
【参考方案2】:根据您提供的信息很难说出原因。我想你应该调查一下
serial.klass[serial.method]
我猜应该有类似的东西
emitter.emit('success');
这可能没有发生,也没有发生错误。希望我能帮上忙。
【讨论】:
以上是关于Sequelize .sync 函数挂起:来自 serial.klass 的发射器的主要内容,如果未能解决你的问题,请参考以下文章
为啥 sequelize.sync() 不同步表,除非我将模态导入文件?
如何将 sequelize.sync 选项强制设置为 false?