I'll provide the answer we figured out in comments. What OP actually wanted was belongsTo
for all his associations.
belongsTo
in Sequelize adds the foreign key on the source while hasOne
adds the foreign key on the target.
hasOne
is actually rarely ever used and is probably due for an api change.