请问一下sequelize 多对多关系如何增加和查询数据

发布于 2022-09-07 11:32:51 字数 1424 浏览 22 评论 0

code表和tag表是多对多关系

code表 model

'use strict';
module.exports = function(sequelize, DataTypes) {
  var code = sequelize.define('code', {
    markdown: DataTypes.TEXT,
    title:DataTypes.STRING
  }, {
    timestamps: true,
    paranoid: true,
    classMethods: {
      associate: function(models) {
        code.belongsToMany(models['tag'], { through: 'tagcode' })
      }
    }
  });
  return code;
};

tag表 model

'use strict';
module.exports = function(sequelize, DataTypes) {
  var tag = sequelize.define('tag', {
    name: DataTypes.STRING,
  }, {
    timestamps: true,
    paranoid: true,
    classMethods: {
      associate: function(models) {
        tag.belongsToMany(models['code'], { through: 'tagcode' })
      }
    }
  });
  return tag;
};

上面两个model会生成tagcode表。

tag表事先已经有数据。

  dbModels.code.create({
        title: req.body.title,
        markdown: req.body.markdown,
        tags: [
            { name: 'Alpha'},
            { name: 'Beta'}
        ]

    },
        {
        include: {model:dbModels.tag }
        }
    ).then(function (code) {
        res.status(200).json(code)
    })

上面的代码每一次添加code的时候都会添加‘Alpha’‘Beta’ tag。
现在想实现添加code记录的时候传递tagId(多个),然后在关系表tagcode 添加相应的关联,并不在tag表添加数据。
请问一下该如何实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你列表最软的妹 2022-09-14 11:32:51
 dbModels.code.create({
        title: req.body.title,
        codeCategoryId: req.body.type,
        limit: 1,
        markdown: req.body.markdown,
    }).then(function (code) {
        dbModels.tag.findAll({where: {id: req.body.tags}}).then(function (tags) {
            code.setTags(tags)
            return res.status(200).json({
                message:'添加文章成功'
            })
        })
    })
魔法唧唧 2022-09-14 11:32:51

谢邀,部署sequelize

与往事干杯 2022-09-14 11:32:51

怎么解决呢??

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文