Sequelize.js sequelize hasOne如何访问关系?
如何访问只有一个关系,它返回未定义。我遵循文档。我想,它已经对了。很难找到一个循序渐进地讨论关系的教程。我看到文档使用get-in模型。像盖塔格 应用程序 媒体模型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
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
});