μλ μ½λλ‘ λ§μ΄κ·Έλ μ΄μ μ μ€ννλ©΄ "μΈλ ν€ μ μ½ μ‘°κ±΄μ μΆκ°ν μ μμ΅λλ€"λΌλ λ©μμ§κ° λνλ©λλ€. λꡬλ μ§ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ λλ₯Ό κ°λ¦¬μΌ μ£Όλμ?
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) {
};
mysqlμ μ¬μ©νκ³ μλ€κ³ κ°μ νλ©΄ UserId
κ° .unsigned()
μμ μ§μ ν΄μΌ ν©λλ€.
λν κ±°κΈ°μμ μ°κΈ°ν νμκ° μμ΄μΌ ν©λλ€. 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
λ κ±°μ νμνμ§ μμ΅λλ€.
μ. λ‘ μ¬λ¬λΆ!! μλ²½νκ² μλνμ΅λλ€. λΉ λ₯Έ λ΅λ³κ³Ό κΉλν ββμ½λ ν κ°μ¬ν©λλ€ :)
λ§μμ! λ°μ΄ν°/pk νλμ fk μ°Έμ‘°λ₯Ό λ κ°μ λ§μ΄κ·Έλ μ΄μ μΌλ‘ λΆν νλ κ²μ΄ λ μ¬μΈ μ μμ΅λλ€. λμμ μ¬κΈ°μμ μνν μμ μ΄μ§λ§ λ‘€λ°±μμλ μμλ₯Ό νμΈν΄μΌ ν¨μ λͺ μ¬νμμμ€.
곧 μΆμλ λ²μ μμλ λͺ¨λ μ€ν€λ§ νΈμΆμ μ°κ²°ν μ μμΌλ©° μμλλ‘ μ€νλλλ‘ λ³΄μ₯λ©λλ€.
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');
};
μ΄ κΈμ μ½λ λ―Έλμ μ¬λλ€μκ² μ°Έκ³ λ‘:
table.integer('UserId',11).unsigned().inTable('User').references('UserId');
μ§κΈμ΄λ€
table.integer('UserId',11).unsigned().references('UserId').inTable('User');
@batman κ°μ¬ν©λλ€!
notNullable()μ μ€λ₯κ° μμ΅λλ€. λ΄ μΈλ ν€λ νμ nullμ
λλ€.
μ 1:) table.integer('restaurant_id').unsigned().references('id').inTable('Restaurants');
μΈλ ν€('restaurant_id")κ° 'Restaurants' ν
μ΄λΈμ 'id'μ μΌμΉνμ§ μμ΅λλ€. λ€μμ μ¬μ©νλ €κ³ ν λ λ¨μν nullμ
λλ€.
EX2: ) table.integer('restaurant_id').unsigned().notNullable().references('id').inTable('Restaurants');
μ€λ₯κ° λ°μνμ΅λλ€(μΈλ ν€ μ μ½ μ‘°κ±΄μ μΆκ°ν μ μμ).
μΈλ ν€κ° λ¬Έμμ΄μ΄μ§λ§ κΈ°λ³Έ ν€('id)λ₯Ό μ°Έμ‘°νλ μ μκ° μλ κ²½μ° μ΄ μμμ μΈλ ν€ μμ±μ΄ μλνλ κ²μ 보μμ΅λλ€. λΆλͺ¨μ Primary key('id')κ° μ μ μ νμ΄ μλκ³ κΈ°λ³Έ μ νμ΄κΈ° λλ¬Έμ
λκΉ?
table.increments('id').primary();
μΈλ ν€κ° λ¬Έμμ΄ μ νμΌ λ μλνλ κ²μ 보μμ§λ§ λ€λ₯Έ ν μ΄λΈμ κΈ°λ³Έ ν€('id')μ λν μ μ μ ν μ°Έμ‘°κ° μμΌλ©΄ μ€λ₯κ° λ°μν©λλ€.
EX1)μ μ¬μ©ν λ λͺ¨λ κ²μ΄ μλνλ κ²μ²λΌ 보μ΄μ§λ§ μΈλ ν€κ° μλμΌλ‘ μ¦κ°νμ§ μκ³ μ 체 μκ° λμ λ¨μν nullμ λλ€. λν λͺ¨λΈ κΈ°λ₯μ μ¬μ©νμ¬ μλμΌλ‘ μ¦κ°μν¬ μ μμ΅λλ€. μ΄ λ¬Έμ κ° μ΄λκ°μμ ν΄κ²°λμμ΅λκΉ?
κ°μ¬ ν΄μ,
μ
λ°μ΄νΈ:
μμλ΄μμμ€. μΈλ ν€λ‘ λ§λ κ³³μμ λ³λμ μ€μ μ μ μ΄μ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
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μ ν¨κ» μ¬μ©ν΄ 보μκ³ μ²μμ μμνμ λ μ€λ₯κ° λ°μνκΈ° λλ¬Έμ κ±°μ ν¬κΈ°νμ΅λλ€. λ νλ μ μν¬ λͺ¨λ λ²κ·Έκ° μλ€κ³ μκ°νμ΅λλ€.
λ νλ μ μν¬ λͺ¨λ λ²κ·Έκ° μλ€κ³ μκ°νμ΅λλ€.
@Juanpam μ μ¬μ©ν νμκ° μμ΅λλ€. κ·Έλλ PRμ νμν©λλ€. νμ΄μ λΉλλ€ :)
@elhigu λꡬμ κΈ°λΆμ μνκ² ν μκ°μ μλμμ΄μ! μ€μ λ‘ νλ μμν¬ πλ₯Ό μ¬μ©νκ³ μμ΅λλ€. λμ κ°μ μ΄λ³΄μμκ²λ κ΄κ³κ° ORM λ° μΏΌλ¦¬ λΉλμμ μΌλ°μ μΌλ‘ μ¬μ©λλ κΈ°λ₯μ΄κΈ° λλ¬Έμ μΌλ°μ μΈ λ¬Έμ μΌ μ μλ€κ³ μκ°νμ΅λλ€. λν MySQLμ μΌλ°μ μΈ RDBMSμ λλ€.
μ§κΈμ ν보λ₯Ό ν μ μμ§λ§ κ΄μ¬μ΄ μλ λΆμ΄ κ³μλ€λ©΄ μΈλ ν€λ₯Ό μμ±νλ©΄μ XAMPP MySQLμ μ¬μ©νλ €κ³ νμ΅λλ€. .primary() λ©μλλ₯Ό μ¬μ©ν λ μμ±λ νλ μ νμ INT(11) unsignedμ΄κ³ .integer()λ₯Ό μ¬μ©νμ¬ μ°Έμ‘° νλλ₯Ό μμ±ν λ κ²°κ³Ό νλ μ νμ INT(11) μλͺ λμ΄ μΈλ ν€ μμ±μ΄ μ€ν¨ν©λλ€. @tgriesser μμ μ νλ₯νκ² μλνμ§λ§ λ¬Έμμμ μ΄μ κ°μ μΌλ°μ μΈ μμ /λ¬Έμ λ₯Ό μ°Ύμ μ μλ€λ©΄ ν¨μ¬ λ μ’μ κ²μ λλ€.
μ΄μ¨λ νλ₯ν μνμ λλ€!
κ°μ₯ μ μ©ν λκΈ
μ΄ κΈμ μ½λ λ―Έλμ μ¬λλ€μκ² μ°Έκ³ λ‘:
table.integer('UserId',11).unsigned().inTable('User').references('UserId');
μ§κΈμ΄λ€
table.integer('UserId',11).unsigned().references('UserId').inTable('User');