添加数据两个表Sequelize

时间:2017-05-30 13:22:32

标签: mysql node.js sequelize.js

这是我的问题。

我在nodejs中创建一个Api休息,我管理我的数据库。我有3个表:投注,用户和用户投注(这一个链接与用户下注)。

我的问题是当我使用Sequelize来做这件事。在我的网页上,它是一个Angular2应用程序,我想创建一个新的赌注,所以当我填写处方集时,我通过post方法将所有数据发送到服务器。问题从这里开始,因为我想在bets表中添加(这不是问题)并在bets-users中添加引用。

示例:

用户A创建新的投注,因此当他点击创建时,他会发送一个包含标题,成本和收入的投注数据。在服务器端,查询运行正常,但我想要的是,当我在投注表中插入赌注时,我想在bet-users中添加id_bet和id_user,因为我想链接添加投注的用户用他创造的赌注。

我不知道我是否解释好。

这是我的代码:

这是投注模型。

module.exports = (sequelize, Sequelize) => {
  const Bet = sequelize.define('apuestas', {
    id: {
      type: Sequelize.INTEGER,
      autoIncrement: true,
      primaryKey: true
    },
    titulo: {
      type: Sequelize.STRING
    },
     coste: Sequelize.INTEGER,
     beneficio: Sequelize.INTEGER
  }, {
    updatedAt: false,
    classMethods: {
      associate: (models) => {
      Bet.belongsTo(models['usuarios_apuestas'], {
          foreignKey: 'id',
           targetKey: 'id_apuesta'
       });
      }
    },
    freezeTableName: true
  });

  return Bet;
};

我有一个控制器:

createBet(req, res) {
        return this.service.create(this.mapper.inputUpdate(req.body))
        .then(this.mapper.outputGet.bind(this.mapper, req.body))
        .then(res.json.bind(res)).catch(res.send.bind(res));
      }

这是映射器:

inputUpdate(inputBet) {
    return  {
      titulo: inputBet.titulo,
      coste: inputBet.coste,
      beneficio: inputBet.beneficio
    };
  }

服务:

create(model) {
    return this.db.create(model);
  }

所有这些方法在不同的文件中是分开的。

总结一下,当我添加一个新的赌注时,我想要的是我想在赌注用户中添加用户之间的关系并保存他的ID。

bets-user表有3列:id,id_bet,id_user。

现在我可以找到用户使用他的id_user参与的所有赌注。

我不知道我是否需要解释更多我的问题,或者你是否理解它。

titulo = title
coste = cost
beneficio = earnings

0 个答案:

没有答案