首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到Sequelize Associate

未找到Sequelize Associate
EN

Stack Overflow用户
提问于 2017-07-06 09:49:37
回答 1查看 6.7K关注 0票数 2

我有一个项目,我正在尝试使用sequelize。它可以很好地创建数据库和表,但它从未找到associate类方法,因此它从未调用associate方法。

这段代码可以很好地创建表(使用导入方法),但是Object.keys(db)遍历每个模型,但它从未找到关联方法。

代码语言:javascript
复制
fs.readdirSync('./models')
    .filter(function (file) {
        return (file.indexOf('.') !== 0) && (file !== 'index.js') && (file.indexOf('.js') > 0) && (file.indexOf('relations.js') !== 0 );
    })


    .forEach(function (file) {
        var model = sequelize.import('../models/' + file);
        db[model.name] = model;
    });

Object.keys(db).forEach(function (modelName) {
        if (db[modelName].associate) {
            db[modelName].associate(db);
            console.log('true');
        }
        else {
            console.log('false');

        }
    }
);

类代码示例:

module.exports =函数(sequelize,DataTypes) {

代码语言:javascript
复制
let userModel = sequelize.define('user', {
    id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    email: {
        type: DataTypes.STRING,
        validate: {
            isEmail: true
        },
        allowNull: false
    }
}, {
    classMethods: {
        associate: function (models) {
            let createdByoptions = {
                foreignKey: 'createdByUserID'
            };
            let emailOptions = {
                foreignKey: 'emailAddressID'
            };

            userModel.hasOne(models.user, createdByoptions);
            userModel.hasOne(models.email, emailOptions)

            //userModel.hasMany(models.tenant, {foreignKey: 'id'});

        },
        addUser: function (identityID) {
            userModel.create({identityUserID: identityID});
        }
    }
});


return userModel;

};

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 12:09:39

Sequelize改变了关联和实例方法的定义方式,post版本>4。

所以之前的关联定义为(对于版本小于4)

代码语言:javascript
复制
const Model = sequelize.define('Model', {
...
}, {
classMethods: {
    associate: function (model) {...}
},
instanceMethods: {
    someMethod: function () { ...}
}
});

现在应该定义为

代码语言:javascript
复制
const Model = sequelize.define('Model', {
...
});

// Class Method
Model.belongsTo(SomeOtherModel);

检查upgrade guidedocs

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44938556

复制
相关文章

相似问题

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