在Model.belongsTo中调用一些不是Sequelize.Model的实例

我试图在两个模型之间引用一个外键。

但我得到这个错误:

throw new Error(this.name + '.' + Utils.lowercaseFirst(Type.toString()) + ' called with something that\'s not an instance of Sequelize.Model'); called with something that's not an instance of Sequelize.Model at Model.belongsTo 

我怎样才能解决这个问题?

这是我的代码到目前为止。

这是我的模特/ mercadolibre.js

 "use strict"; var User = require('../models/index').User; module.exports = function(sequelize, DataTypes) { var MercadoLibre = sequelize.define("MercadoLibre", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, access_token: DataTypes.STRING, refresh_token: DataTypes.STRING, environment_hash: DataTypes.STRING }, { tableName: 'mercadolibres', underscored: true, timestamps: true } ); MercadoLibre.belongsTo(User); return MercadoLibre; }; 

这是我的models / user.js

 "use strict"; module.exports = function(sequelize, DataTypes) { var User = sequelize.define("User", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: DataTypes.STRING, slack_id: DataTypes.STRING, environment_hash: { type: DataTypes.STRING, defaultValue: DataTypes.UUIDV4 } }, { tableName: 'users', underscored: false, timestamps: false } ); return User; }; 

这是我的models / index.js

 "use strict"; var fs = require("fs"); var path = require("path"); var Sequelize = require('sequelize') , sequelize = new Sequelize(process.env.MYSQL_DB, process.env.MYSQL_USER, process.env.MYSQL_PASSWORD, { dialect: "mysql", // or 'sqlite', 'postgres', 'mariadb' port: 3306, // or 5432 (for postgres) }); var db = {}; fs .readdirSync(__dirname) .filter(function(file) { return (file.indexOf(".") !== 0) && (file !== "index.js"); }) .forEach(function(file) { var model = sequelize.import(path.join(__dirname, file)); db[model.name] = model; }); Object.keys(db).forEach(function(modelName) { if ("associate" in db[modelName]) { db[modelName].associate(db); } }); db.sequelize = sequelize; db.Sequelize = Sequelize; module.exports = db; 

像这样使用:

 module.exports = function(sequelize, DataTypes) { var MercadoLibre = sequelize.define("MercadoLibre", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, access_token: DataTypes.STRING, refresh_token: DataTypes.STRING, environment_hash: DataTypes.STRING }, { tableName: 'mercadolibres', underscored: true, timestamps: true, classMethods: { associate : function(models) { MercadoLibre.belongsTo(models.User) }, }, }); return MercadoLibre; 

};