我正在尝试使用sequelize.js将数据插入到桥接/映射表中
我将文章定义为-
const Articles = db.define('article', {
"slug": {
type: Sequelize.STRING,
primaryKey: true,
allowNull:false
},
"title": {
type: Sequelize.STRING(50),
allowNull: false
},
"description": {
type: Sequelize.STRING(100),
},
"body": Sequelize.STRING,
})
和标签as-
const Tags = db.define('tag', {
name: {
type: Sequelize.STRING,
primaryKey: true
}
})
我在他们之间创建了多对多关联
Articles.belongsToMany(Tags, {through:'article_tags'})
Tags.belongsToMany(Articles, {through:'article_tags'})
这在数据库中创建了一个表article_tags以及文章和标签。但是,现在如何使用sequelize将数据插入此article_tags桥接表中?
答案 0 :(得分:0)
您还必须对映射表进行建模...。然后,当您在解析器中说“ tagArticle”之类的内容时,只需在映射表上调用带有文章ID和ID的create函数标签的...这是一个连接表解析器的示例,我在其中将经销商连接到帐户
createUserAccountDealer: async (_, args, { models }) => {
let returnValue = null;
const { username, input } = args;
try {
returnValue = await models.ProfileDealerInfo.create(input);
if (returnValue && returnValue.dataValues.id) {
const tempJoin = { username, dealer_id: returnValue.dataValues.id };
await models.ProfileAccountDealer.create(tempJoin);
}
} catch (err) {
logger.error(err);
}
return returnValue;
}
对我来说,区别是经销商是帐户的子项,因此我在创建子经销商记录后立即进行加入记录...您的示例有点区别,其中标签和商品可能已经存在,而您可能只是关联它们意味着ID将从客户端传入args中,而您没有多余的步骤等待从创建的子记录中获取ID