在我的测试环境中,我删除数据库,然后每次测试时都从头开始重新创建。
使用sequelize.sync({ force: true });
方法给我带来了麻烦。基本上,我的所有模型都使用associate(models)
方法中的适当关系进行设置,但是从头开始创建表时,似乎Sequelize尝试同时创建表及其关系,因为某些关系中引用的表不会在该点创建。我收到以下错误:
ERROR: relation "tableName" does not exist
由于sequelize.sync()
是异步操作,因此tableName会根据首先向数据库服务器发送的查询而更改。但是,检查数据库日志时,所有引用了不存在的表的查询确实会引发错误。
这对我来说似乎不是正常行为。我哪里错了?我是否必须将关联过程包装在事务中?