2017-01-12 8 views
0

マイグレーションを使用してデータベースのモデルから列を削除しましたが、マイグレーションは成功しても、Sequelizeは引き続きNode.jsの同じフィールドを照会しようとしています応用。ここで削除された列を照会しようとしました。

は、私が実行しようとしているコードです:

db.Alarm.all({ logging: console.log }) 
.catch(console.log) 

は、ここでクエリーログ出力の一部(USER_IDが削除された列である)です。

Executing (default): SELECT "id", "driver_id", "dismissed_by", (...), "user_id" 
FROM "alarms" AS "Alarm" WHERE "Alarm"."deleted_at" IS NULL; 

そして、ここでは、の一部ですcatch出力:

{ [SequelizeDatabaseError: column "user_id" does not exist] 
name: 'SequelizeDatabaseError', 
message: 'column "user_id" does not exist', 
original: 
{ [error: column "user_id" does not exist] 
name: 'error', 
length: 101, 
severity: 'ERROR', 
code: '42703', 
detail: undefined, 
hint: undefined, 
position: '257', 
internalPosition: undefined, 
internalQuery: undefined, 
where: undefined, 
schema: undefined, 
table: undefined, 
column: undefined, 
dataType: undefined, 
constraint: undefined, 
file: 'parse_relation.c', 
line: '3090', 
routine: 'errorMissingColumn', 
sql: 'SELECT "id", "driver_id", "dismissed_by", (...), "user_id" FROM "alarms" AS "Alarm" WHERE "Alarm"."deleted_at" IS NULL;' } 

user_idフィールドとbelongsTo(User)アソシエーションをアラームモデルから削除しました。私のモデルがユーザに持っている唯一の参考文献はdismissed_byであり、上記の出力に見ることができます。私もPostgreSQLのAlarmsテーブルをチェックしましたが、実際にはuser_idというカラムがないので、何が起こっているのか分かりません。

更新:この問題は外部キー列にのみ影響しているようです。モデルの他の列を追加/削除/名前変更することはできましたが、列の名前を変更するときに同じ問題が発生しましたdismissed_by

+0

移行の前後にモデルがある可能性があります。 –

+0

@DanRocha問題は私がモデルの1つで削除するのを忘れてしまった関連性でした –

答えて

0

私はユーザーモデル(user_id列)にhasMany関連付けがありませんでした。削除したときに正常に機能しました=]

関連する問題