Sequelize - 用户模型,在SQL中将2个地址作为外键

问题描述 投票:1回答:1

我无法更有效/更清晰地插入和查找用户。我有一个用户表,我有:id,mail,password,billing_address(外键),shipping_address(外键)现在,它创建用户然后单独创建地址,然后更新user.billing_address和user。 shipping_address,地址为id。

现在我的问题是我可以创建用户的类方法,其中我有示例user.create和user.find来完成这项工作。

db.user = require('../models/user')(sequelize, Sequelize);
db.address = require('../models/addresses')(sequelize, Sequelize);
db.user.hasMany(db.address);
db.address.belongsTo(db.user);

模型定义如下:用户

module.exports = function(sequelize, DataTypes) {
  const User = sequelize.define('User', {..attributes..}, {
    paranoid: true,
    underscored: true,
    hooks: {
      beforeCreate: function(user) {
        try
        {
          if(!user.changed('password')) return sequelize.Promise.reject('not modified');

          var hash = bcrypt.hashSync(user.password);

          user.setDataValue('password', hash);
        }
        catch(e)
        {console.error("Big one");}
      },
    }
  });
  return User;
};

地址:

module.exports = function(sequelize, DataTypes) {
  const Addresses = sequelize.define('Addresses', {..attributes..}, {
    underscored: true,
  });
  return Addresses;
};

我想要这样的事情来完成:db.user.create() - 它应该为用户创建一个用户和地址,并为对象提供所有信息。 db.user.find() - 它应该找到一个具有用户ID的用户,并从该用户返回所有地址,而不仅仅是他们的id。

javascript sql node.js sequelize.js
1个回答
0
投票

我不知道你怎么会在续集中这样做但是这种事情对于sworm来说非常简单

var person = db.model({table: 'people'});
var address = db.model({table: 'addresses'});

var bob = person({
  name: 'bob',
  address: address({
    address: 'Fremantle'
  })
});

bob.save()

这将导致:

-------- people ----------
| id | name | address_id |
--------------------------
| 11 | bob  | 22         |
--------------------------

------- addresses ------
| id | address         |
------------------------
| 22 | Fremantle       |
------------------------
© www.soinside.com 2019 - 2024. All rights reserved.