2015-02-05 5 views
5

ich den Code in den Link versucht FK zu erstellen:Knex Migration Erstellen von Fremdschlüssel

how to do knex.js migration

ich auf der Leitung einen Fehler bekam:

table.bigInteger('AddressId').unsigned().index().inTable('Address').references('id'); 

Der Fehler:

TypeError: Object # has no method 'inTable' at 
TableBuilder_MySQL._fn (/Users/lwang/knex/migrations/20150204161920_lei_maigration.js:15:56) at 
TableBuilder_MySQL.TableBuilder.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/tablebuilder.js:61:12) at 
SchemaCompiler_MySQL.createTable (/Users/lwang/knex/node_modules/knex/lib/schema/compiler.js:14:53) at 
SchemaCompiler_MySQL.SchemaCompiler.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/compiler.js:35:24) at 
SchemaBuilder_MySQL.SchemaBuilder.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/builder.js:41:35) at 
Runner_MySQL. (/Users/lwang/knex/node_modul... 

Antwort

15

Dies könnte ein wenig spät kommen, aber der Fehler ist, weil

table.bigInteger('AddressId').unsigned().index().inTable('Address').references('id'); 

sollte

table.bigInteger('AddressId').unsigned().index().references('id').inTable('Address') 

Die inTabelle Funktion existiert nur nach Referenzen geschrieben werden, wie erklärt in der Dokumentation http://knexjs.org/#Schema-inTable

Sets the "table" where the foreign key column is located after calling column.references.

Aufruf