вот мой код:
//Models definition
var User = sequelize.define('user', ...);
var Address = sequelize.define('address', ...);
var Club = sequelize.define('club', ...);
//Club scopes
scopes: {
withUser: {
include: [
{ model: User }
]
},
//Models associations
User.hasOne(Address);
Club.hasOne(User);
Club.hasOne(Address);
//Main
//Create address
var addressToCreate = {};
if(body.address) addressToCreate.address = body.address;
if(body.city) addressToCreate.city = body.city;
if(body.zipCode) addressToCreate.zipCode = body.zipCode;
//Get user from db
var user = await User.findByPk(body.user);
var clubToCreate = { name: body.name, phone: body.phone };
//Persist Address in db
return Address.create(addressToCreate)
.then(address => {
//Persist club in db
return Club.create(clubToCreate)
.then(club => {
//Associate User and Address to Club
club.setAddress(address);
club.setUser(user);
//Save club with associated models
return club.save()
})
.then(club => Club.scope('withUser').findByPk(club.id))
.then(club => { console.log(club); return club; })
})
В моей базе данных адрес таблицы содержит userId и clubId, а пользователь таблицы содержит clubId;
Этот код работает для создания и связывания моделей.Но последний клуб, отображаемый console.log, показывает пользователя: null
Тем не менее, в db есть хорошая строка в таблице user с хорошим внешним ключом, который ссылается на идентификатор клуба
Мои журналы показываютчто запрос на выбор (из Club.findByPk) выполняется перед обновлением (из club.save).Например, .hen выполняется до выполнения обещания
Извините за мой плохой английский, надеюсь, кто-то может помочь