簡體   English   中英

在sequelize中創建具有關聯的模型

[英]Create model with its association in sequelize

我正在使用sequelize作為我的nodejs網絡應用程序ORM。
我有2個型號, OfferGame 它們之間存在1:1的關聯,我正在考慮如何實現它。
首先,我嘗試使用Offer.belongsTo(Game)以便GameId駐留在Offer模型中。 當我創建一個Offer ,我希望也可以創建Game

我已將關聯設置如下:

Offer.belongsTo(models.Game, {
      foreignKey: {
        allowNull: false
      }
    })

所以GameId永遠不會為空。 sequelize docs中 ,我注意到我可以像這樣一起創建GameOffer

models.Offer.create({Game:{"name":"The Last of Us", "platform":"PC"}},{include:[models.Game]});

但是我得到了:

Unhandled rejection SequelizeDatabaseError: null value in column "GameId" violates not-null constraint

我怎樣才能創建一個OfferGame使用NOT NULL約束在1個行動?

編輯:

module.exports = function(sequelize, DataTypes) {
  var Game = sequelize.define("Game", {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    },
    platform: {
      type: DataTypes.ENUM('PC', 'PS4', 'PS3', 'XB1', 'XB360'),
      allowNull: false
    },
    cover: {
      type: DataTypes.STRING,
      allowNull: false,
      validate: {
        notEmpty: true
      }
    }
  }, {
    updatedAt: false,
    createdAt: false
  });

  return Game;
};

module.exports = function(sequelize, DataTypes) {
  var Offer = sequelize.define("Offer", {
    price: {
      type: DataTypes.INTEGER,
      validate: {
        max: 999,
        min: 0
      }
    },
    exchange: {
      type: DataTypes.BOOLEAN,
      defaultValue: true,
      allowNull: false
    }
  }, {
    updatedAt: false,
    classMethods: {
      associate: function(models) {
        Offer.belongsTo(models.Game, {
          foreignKey: {
            allowNull: false
          }
        });
      }
    }
  });

  return Offer;
};

您沒有為Offer對象添加任何內容。 你只是傳遞Game對象。

models.Offer.create({
    //set fields for 'Offer'
    Game:{"name":"The Last of Us", "platform":"PC"}
    },
    {include:[models.Game]}
);

此外,您只需在設置關聯時定義foreignKey 約束定義存在於模型中:

Offer.belongsTo(models.Game, {
      foreignKey: 'GameId'
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM