• Sequelize-nodejs-13-Working with legacy tables


    Working with legacy tables使用遗留表

    While out of the box Sequelize will seem a bit opinionated it's trivial to both legacy and forward proof your application by defining (otherwise generated) table and field names.

    虽然开箱即用的Sequelize会显得有点固执己见,但是可以通过定义(否则生成)表和字段名来使用你的应用的遗留和之前的凭据,这是微不足道的。

    Tables表

    sequelize.define('user', {
    
    }, {
      tableName: 'users'
    });

     

    Fields字段

    sequelize.define('modelName', {
      userId: {
        type: Sequelize.INTEGER,
        field: 'user_id'
      }
    });

     

    Primary keys主键

    Sequelize will assume your table has a id primary key property by default.

    Sequelize将假设您的表默认具有id主键属性

    To define your own primary key:

    想要定义你自己的主键:

    sequelize.define('collection', {
      uid: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true // Automatically gets converted to SERIAL for postgres
      }
    });
    
    sequelize.define('collection', {
      uuid: {
        type: Sequelize.UUID,
        primaryKey: true
      }
    });

    And if your model has no primary key at all you can use Model.removeAttribute('id');

    如果你的模型根本没有主键,你可以使用 Model.removeAttribute('id');

     

    Foreign keys外键

    // 1:1
    Organization.belongsTo(User, {foreignKey: 'owner_id'});
    User.hasOne(Organization, {foreignKey: 'owner_id'});
    
    // 1:M
    Project.hasMany(Task, {foreignKey: 'tasks_pk'});
    Task.belongsTo(Project, {foreignKey: 'tasks_pk'});
    
    // N:M
    User.hasMany(Role, {through: 'user_has_roles', foreignKey: 'user_role_user_id'});
    Role.hasMany(User, {through: 'user_has_roles', foreignKey: 'roles_identifier'});
     
  • 相关阅读:
    JAVA学习日报 11/26
    JAVA学习日报 11/25
    大二寒假作业之JavaWeb
    大二寒假作业之JavaWeb
    大二寒假作业之JavaWeb
    大二寒假作业之《构建之法》读后感2
    大二寒假作业之Android
    大二寒假作业之《构建之法》读后感1
    大二寒假作业之android
    大二寒假作之Android
  • 原文地址:https://www.cnblogs.com/wanghui-garcia/p/10071427.html
Copyright © 2020-2023  润新知