簡體   English   中英

使用現有外鍵續寫新記錄

[英]sequelize create new record with already existing foreign key

我想為現有用戶創建一個新的登錄記錄。 我的用戶模型是這樣的:

 'use strict'; module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { userId: { type: DataTypes.INTEGER, primaryKey: true, }, firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { }); User.associate = function(models) { models.User.hasMany(models.Login, { foreignKey: 'userId', as: 'loginUserId' }); }; return User; }; 

我的登錄模型如下所示:

 'use strict'; module.exports = (sequelize, DataTypes) => { const Login = sequelize.define('Login', { loginId: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, }, ipAddress: DataTypes.STRING, isSuccessfullLogin: DataTypes.BOOLEAN, }, {}); Login.associate = function(models) { Login.belongsTo(models.User, { foreignKey: 'userId', onDelete: 'CASCADE', as: 'loginUserId' }); }; return Login; }; 

當我嘗試通過以下代碼在“登錄”表中插入記錄時:

 const loginRecord = await models.Login.create({ ipAddress: "127.0.0.1, isSuccessfullLogin: true, loginUserId: 2, }) 

它拋出了我的錯誤

未處理的拒絕SequelizeDatabaseError:字段'loginUserId'沒有默認值

注意:Mysql在Login表中顯示了loginUserId,並且還顯示了它作為外鍵的約束。

任何幫助表示贊賞。

我建議將歸檔ID添加到模型Login中 ,並將ID更改為primaryKey

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Login = sequelize.define('Login', {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true,
      autoIncrement: true,
    },
    userId: DataTypes.INTEGER,
    ipAddress: DataTypes.STRING,
    isSuccessfullLogin: DataTypes.BOOLEAN,
  }, {});
  Login.associate = function(models) {
    Login.belongsTo(models.User, {
      foreignKey: 'userId',
      onDelete: 'CASCADE',
      as: 'loginUserId'
    });
  };
  return Login;
};

將記錄插入表中登錄:

const loginRecord = await models.Login.create({
    ipAddress: "127.0.0.1,
    isSuccessfullLogin: true,
    userId: 2,
  })

暫無
暫無

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

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