Проблема с внешним ключом и методами belongsTo

#mysql #sequelize.js

#mysql #sequelize.js

Вопрос:

Я создаю поддельный веб-сайт онлайн-банкинга. Возникли проблемы с определенной частью, где я пытаюсь сделать так, чтобы каждый пользователь мог иметь много учетных записей, используя метод belongsTo. Я был таблицей accounts для хранения внешнего идентификатора пользователя.

Вот модель пользователей

 module.exports = function (sequelize, DataTypes) {
    var User = sequelize.define("User", {

        firstName: {type:DataTypes.STRING, allowNull:false},
        lastName: {type:DataTypes.STRING, allowNull:false},
        addressLine1: {type:DataTypes.STRING, allowNull:false},
        addressLine2: {type:DataTypes.STRING, defaultValue: "Null"}, 
        city: {type:DataTypes.STRING, allowNull:false},
        state: {type:DataTypes.STRING, allowNull:false},
        zip: {type:DataTypes.INTEGER, allowNull:false},
        SSN:{type:DataTypes.STRING, allowNull: false},
        DOB: {type:DataTypes.STRING, allowNull:false},
        email: {type:DataTypes.STRING, allowNull:false},
        username: {type:DataTypes.STRING, allowNull:false},
        // acctNoCHK: {type:DataTypes.INTEGER, unique:true},
        // acctNoSAV: {type:DataTypes.INTEGER, unique:true}
    });

    User.associate = function (models) {
        User.hasMany(models.Account, {
            onDelete: "cascade"
        });
    };

    return User;
};
  

Вот модель учетной записи

 module.exports = function(sequelize, DataTypes) {
  var Account = sequelize.define("Account", {
    type: {type:DataTypes.STRING, allowNull:false},
    balance: {type:DataTypes.STRING, allowNull:false},
    isOpen: {type:DataTypes.BOOLEAN, allowNull:false}
  });

  Account.associate = function(models) {
    Account.belongsTo(models.User, {
      foreignKey: "UserId", targetKey: "id"
    });
  };

  return Account;
};
  

что именно я делаю не так??? Столбец userId в accounts всегда отображается как Null. Спасибо за любую помощь!

Комментарии:

1. Не могли бы вы, пожалуйста, показать, как вы сохраняете данные об учетных записях?

2. Извините, что именно вы имеете в виду под этим?

3. Вы только что сказали, что это UserId всегда равно null, поэтому я подумал, что вы пытаетесь сохранить что-то в UserId , но в db значение null. Или как, по-вашему, работает ассоциация? Потому что тогда я не понимаю вашего вопроса. Попытайтесь лучше объяснить себя.

Ответ №1:

   var Account = sequelize.define("Account", {
    type: {type:DataTypes.STRING, allowNull:false},
    balance: {type:DataTypes.STRING, allowNull:false},
    isOpen: {type:DataTypes.BOOLEAN, allowNull:false},
    userId: {type: DataTypes.INTEGER } // need userId in Account
  });
  
 const { id } = await Uesr.create({ ... });
await Account.create({ ...  , userId: id});// we need save userId