Sequelize.js sequelize hasOne如何访问关系?

Sequelize.js sequelize hasOne如何访问关系?,sequelize.js,Sequelize.js,如何访问只有一个关系,它返回未定义。我遵循文档。我想,它已经对了。很难找到一个循序渐进地讨论关系的教程。我看到文档使用get-in模型。像盖塔格 应用程序 媒体模型 const Tag = require('./tag'); Media.init({ id: { type: DataTypes.BIGINT.UNSIGNED, allowNull: false, autoIncrement: true, primaryKey

如何访问只有一个关系,它返回未定义。我遵循文档。我想,它已经对了。很难找到一个循序渐进地讨论关系的教程。我看到文档使用get-in模型。像盖塔格

应用程序

媒体模型

const Tag = require('./tag');
Media.init({
    id: {
        type: DataTypes.BIGINT.UNSIGNED,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        unique: true
    },
    type_id: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        references: {
            model: 'types',
            key: 'id'
        }
}, {
    sequelize,
    modelName: 'Media',
    tableName: 'media',
    engine: 'MYISAM',
    charset: 'utf8mb4',
    collate: 'utf8mb4_unicode_ci',
    timestamps: false 
});

Media.hasOne(Tag, {
    as: 'Tag',
    foreignKey: 'type_id'
});
标签模型

Tag.init({
    id: {
        type: DataTypes.MEDIUMINT.UNSIGNED,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        unique: true
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false
    }
}, {
    sequelize,
    modelName: 'Tag',
    tableName: 'tags',
    engine: 'MYISAM',
    charset: 'utf8mb4',
    collate: 'utf8mb4_unicode_ci',
    timestamps: false 
});
您需要在您的查询中输入,以便让Sequelize知道您想要从关系中获取数据。因为关系层次结构可能非常广泛,所以每次都加载它们并不是很有效,所以您需要告诉Sequelize您想要加载什么。通过使用
属性
属性仅获取所需的字段(默认情况下返回所有字段),可以进一步优化

const media=wait media.findOne({
包括:{
型号:Tag,
},
哪里:
//…你的标准
},
});
console.log(media.Tag);
通过包含在findall/one中。你必须包括你的关系模型
Tag.init({
    id: {
        type: DataTypes.MEDIUMINT.UNSIGNED,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        unique: true
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false
    }
}, {
    sequelize,
    modelName: 'Tag',
    tableName: 'tags',
    engine: 'MYISAM',
    charset: 'utf8mb4',
    collate: 'utf8mb4_unicode_ci',
    timestamps: false 
});