Knex: рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрд╛рдзрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдкреНрд░реИрд▓ 2014  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: knex/knex

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛рддреЗ рд╕рдордп, рдореБрдЭреЗ "рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрд╛рдзрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛" рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ?

exports.up = function(knex, Promise) {
    var defer=Promise.defer();

    knex.schema.createTable('User',function(table){

        //--Create User Table
        table.increments('UserId').primary();
        table.string('username');
        table.string('email',60);
        table.string('password',65);
        table.timestamps();

    })
    .then(function(){
        return knex.schema.createTable('Comment',function(table){

            //--Create Comment Table
            table.increments('CommentId').primary();
            table.string('Comment');

            table.integer('UserId',11).inTable('User').references('UserId');

        });     
    })
    .then(function(){

            defer.resolve();
    });


    return defer.promise;

};

exports.down = function(knex, Promise) {

};  

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП FYI рдХрд░реЗрдВ:
table.integer('UserId',11).unsigned().inTable('User').references('UserId');
рдЕрдм рд╣реИ
table.integer('UserId',11).unsigned().references('UserId').inTable('User');

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ UserId .unsigned() рд╣реИ

рдЖрдкрдХреЛ рдЙрд╕ defer рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ knex.schema.createTable рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

exports.up = function(knex, Promise) {
  return knex.schema.createTable('User',function (table){ 
      table.increments('UserId').primary();
      table.string('username');
      table.string('email',60);
      table.string('password',65);
      table.timestamps();
  })
  .then(function () {
    return knex.schema.createTable('Comment',function(table){
      table.increments('CommentId').primary();
      table.string('Comment');
      table.integer('UserId',11).unsigned().inTable('User').references('UserId');
    });     
  });
};

рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рдХрднреА рднреА Promise.defer рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдмрд╣реБрдд рдЦреВрдмред рддреБрдо рд▓реЛрдЧ рдХрдорд╛рд▓ рдХреЗ рд╣реЛ!! рдмрдЦреВрдмреА рдХрд╛рдо рдХрд┐рдпрд╛ред рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХреНрд▓реАрдирд░ рдХреЛрдб рдкрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

рдЖрдкрдХреЛ рдпрд╣ рдорд┐рд▓рд╛! рдЖрдкрдХреЛ рдбреЗрдЯрд╛/рдкреАрдХреЗ рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдлрдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рджреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдк рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рд░реЛрд▓рдмреИрдХ рдкрд░ рднреА рдСрд░реНрдбрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрд▓реНрдж рд╣реА рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЖрдк рд╕рднреА рд╕реНрдХреАрдорд╛ рдХреЙрд▓реЛрдВ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рдПрдЧреА:

exports.up = function(knex, Promise) {
  return knex.schema.createTable('User', function(table){ 
      table.increments('UserId').primary();
      table.string('username');
      table.string('email',60);
      table.string('password',65);
      table.timestamps();
  }).createTable('Comment',function(table){
      table.increments('CommentId').primary();
      table.string('Comment');
      table.integer('UserId',11).unsigned().inTable('User').references('UserId');  
  });
};

рдиреАрдЪреЗ рдкрд▓рд╛рдпрди:

exports.down = function(knex, Promise) {
  return knex.schema.dropTable('Comment').dropTable('User');
};

рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП FYI рдХрд░реЗрдВ:
table.integer('UserId',11).unsigned().inTable('User').references('UserId');
рдЕрдм рд╣реИ
table.integer('UserId',11).unsigned().references('UserId').inTable('User');

рдзрдиреНрдпрд╡рд╛рдж @рдмреИрдЯрдореИрди!

Nullable () рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛрдирд╛ред рдореЗрд░реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╣реЛрддреА рд╣реИ:
рдкреВрд░реНрд╡ 1:) table.integer('restaurant_id').unsigned().references('id').inTable('Restaurants');
рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА ('restaurant_idтАЭ) рддрд╛рд▓рд┐рдХрд╛ 'рд░реЗрд╕реНрддрд░рд╛рдВ' рдореЗрдВ 'id' рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рд╣реИ:
EX2: ) table.integer('restaurant_id').unsigned().notNullable().references('id').inTable('Restaurants');
рдЬрд┐рд╕рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреА (рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛)ред

рдореИрдВрдиреЗ рдЗрд╕ рдлреЙрд░реНрдо рдХреЗ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдирд┐рд░реНрдорд╛рдг рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдпрджрд┐ рд╡рд╣ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА ('рдЖрдИрдбреА) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рдеред рдХреНрдпрд╛ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА ('рдЖрдИрдбреА') рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ?
table.increments('id').primary();

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рддрдм рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ рдЬрдм рд╡реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА ('рдЖрдИрдбреА') рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдиреЗ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред

рдЬрдм рдореИрдВ EX1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ) рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдСрдЯреЛ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдпрд╣ рдкреВрд░реЗ рд╕рдордп рдмрд╕ рд╢реВрдиреНрдп рд╣реИред рдореИрдВ рдореЙрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред рдХреНрдпрд╛ рдпрд╣ рдорд╕рд▓рд╛ рдХрд╣реАрдВ рд╕реБрд▓рдЭ рдкрд╛рдпрд╛?

рдзрдиреНрдпрд╡рд╛рдж,

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рдЗрд╕реЗ рд╕рдордЭреЗрдВ, рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╣реИрдВред

table.integer('restaurant_id').unsigned();
          table.integer('location_id').unsigned();
          table.foreign('restaurant_id').references('Restaurants.id');
          table.foreign('location_id').references('Locations.id');

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ MySQL рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп .unsigned() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ Objection.js рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд▓рдЧрднрдЧ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рд╕реЛрдЪрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдврд╛рдВрдЪреЗ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдереЗред

рд╕реЛрдЪрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдврд╛рдВрдЪреЗ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдереЗред

@ рдЬреБрдЖрдирдкрдо рдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЖрдкрдХреЛ рдХрд╛рдордпрд╛рдмреА рдорд┐рд▓реЗ :)

@elhigu рдореЗрд░рд╛ рдорддрд▓рдм рдХрд┐рд╕реА рдХреЛ рдареЗрд╕ рдкрд╣реБрдБрдЪрд╛рдирд╛ рдирд╣реАрдВ рдерд╛! рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ ред рдмрд╕ рд╕реЛрдЪрд╛ рдХрд┐ рдореЗрд░реЗ рдЬреИрд╕реЗ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЖрдо рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдз рдЖрдорддреМрд░ рдкрд░ рдУрдЖрд░рдПрдо рдФрд░ рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, MySQL рдПрдХ рд╕рд╛рдорд╛рдиреНрдп RDBMS рд╣реИред

рдореИрдВ рдЕрднреА рдкреАрдЖрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╕рдордп рдПрдХреНрд╕рдПрдПрдордкреАрдкреА рдорд╛рдИрдПрд╕рдХреНрдпреВрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ .primary() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ INT(11) рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ рдФрд░ рдЬрдм рдЖрдк .integer() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдкрд░рд┐рдгрд╛рдореА рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ INT(11) рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред @tgriesser рдлрд┐рдХреНрд╕ рдЕрджреНрднреБрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдбреЙрдХреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реБрдзрд╛рд░/рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ рднреА, рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

koskimas picture koskimas  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattgrande picture mattgrande  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nklhrstv picture nklhrstv  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lanceschi picture lanceschi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

npow picture npow  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ