在Node / Express中重新加载 – “没有这样的表:main.User”错误

我试图用Sequelize构build一个简单的Node / Express应用程序,但是当我尝试在关系数据库中创build新logging时,出现错误Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: no such table: main.User 。 基本上,我在Users表中创build一个用户,然后尝试在Addresses表中创build一个相关的Addresses – 用户成功创build,但它创build地址时出现此错误…在哪里得到main前缀从表名? (完整的错误读数在下面)…

首先,这里是我的节目的简介…

  • 我的Sequelize版本是Sequelize [Node: 6.8.1, CLI: 2.4.0, ORM: 3.29.0] ,我使用Sequelize CLI命令sequelize init来设置我的项目的这一部分。

  • 我正在使用SQLite3进行本地开发,并在config/config.json我有开发数据库定义为

     "development": { "storage": "dev.sqlite", "dialect": "sqlite" } 
  • 我的用户迁移:

     'use strict'; module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.createTable('Users', { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, first_name: { type: Sequelize.STRING }, last_name: { type: Sequelize.STRING }, createdAt: { allowNull: false, type: Sequelize.DATE }, updatedAt: { allowNull: false, type: Sequelize.DATE } }); }, down: function(queryInterface, Sequelize) { return queryInterface.dropTable('Users'); } }; 
  • 和地址迁移(略):

     module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.createTable('Addresses', { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, address_line_one: { type: Sequelize.STRING }, UserId: { type: Sequelize.INTEGER, allowNull: false, references: { model: "User", key: "id" } } }) } 
  • 用户模式:

     'use strict'; module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { first_name: DataTypes.STRING, last_name: DataTypes.STRING }, { classMethods: { associate: function(models) { models.User.hasOne(models.Address); } } }); return User; }; 
  • 和地址模型:

     'use strict'; module.exports = function(sequelize, DataTypes) { var Address = sequelize.define('Address', { address_line_one: DataTypes.STRING, UserId: DataTypes.INTEGER }, { classMethods: { associate: function(models) { models.Address.hasOne(models.Geometry); models.Address.belongsTo(models.User, { onDelete: "CASCADE", foreignKey: { allowNull: false } }); } } }); return Address; }; 
  • 最后,我的路线index.js

     router.post('/createUser', function(req, res){ var firstName = req.body.first_name; var lastName = req.body.last_name; var addressLineOne = req.body.address_line_one; models.User.create({ 'first_name': newUser.firstName, 'last_name': newUser.lastName }).then(function(user){ return user.createAddress({ 'address_line_one': newUser.addressLineOne }) }) 

所以,当我尝试发布到/createUser ,用户将成功创build,并且控制台会说已经创build了一个新的地址( INSERT INTO 'Addresses'... ),但地址不会被创build,并且以下错误是logging:

Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: no such table: main.User at Query.formatError (/Users/darrenklein/Desktop/Darren/NYCDA/WDI/projects/world_table/wt_test_app_1/node_modules/sequelize/lib/dialects/sqlite/query.js:348:14) at afterExecute (/Users/darrenklein/Desktop/Darren/NYCDA/WDI/projects/world_table/wt_test_app_1/node_modules/sequelize/lib/dialects/sqlite/query.js:112:29) at Statement.errBack (/Users/darrenklein/Desktop/Darren/NYCDA/WDI/projects/world_table/wt_test_app_1/node_modules/sqlite3/lib/sqlite3.js:16:21)

我几个月前曾经用Sequelize做过这样的事情,而且成功了,我不能在我的生活中找出我在这里失踪的东西。 为什么应用程序正在寻找main.User ,我怎样才能find正确的表? 谢谢!

啊哈! 一个小小的错误已经使我的整个行动出轨。 在迁移文件中, references.model必须被复数化!

 references: { model: "Users", key: "id" } 

繁荣。