Size: a a a

Sequelize - community (eng/ru)

2021 April 20

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
пример в закрепленом
источник

AD

Alexey Donetskiy in Sequelize - community (eng/ru)
Спасибо за ответ!
Я попробовал создать квери напрямую в БД и у меня получился результат.

Можете подсказать пожалуйста, как воспроизвести выделенный джойн в сиквалайзе?
источник

AD

Alexey Donetskiy in Sequelize - community (eng/ru)
Ассоциация уже установлена

@HasMany(() => Installation)
installations: Installation[];
источник
2021 April 21

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
ребята привет, уже обращался когда-то с этой проблемой, но так и не решил ее. Создал тему для удобства понимания всей ситуевины, сколько я уже вариантов не перепробовал, и через обычный seq и с targetKey, правда в seq-ts я хз где его можно использовать и есть ли он вообще там, так как у меня используется этот пакет. Какие еще могут быть идеи, я уже в отчаянии...
https://ru.stackoverflow.com/questions/1272877/model-association-%d0%bc%d0%b5%d0%b6%d0%b4%d1%83-%d1%82%d0%b0%d0%b1%d0%bb%d0%b8%d1%86%d0%b0%d0%bc%d0%b8-%d0%b2-sequelize-typescript
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
у вас ассоциации (связи) объявлены неправильно, пример в закрепленных
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
да, этот
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
иди сделайте согласно доке
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
так почему не правильно?
я и по примеру этому делал и по доке
User.hasMany(Access, {foreignKey: 'web_roles_id', as: 'accesses'});
Access.belongsTo(User, {foreignKey: 'web_roles_id', as: 'user'});
const user = await User.findOne({ where: { email: payload.email.trim() }, include: 'accesses' })
итог тот же
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
я не видел этого в описании на стек оверфлоу
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
там:

@BelongsTo(() => User)
 user: User

 public toPlainObject() {
   return {
     id: this.id,
     roleId: this.roleId,
     routeId: this.routeId,
     isAccess: this.isAccess
   }
 }
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
я выложил свой вариант с sequelize-typescript
но на чистом seq я тоже пробовал, вот как написал
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
я не знаком с синтаксисом sequelize-typescript. у вас проблема в том, что для связи он не то поле использует?
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
так тоже не то подставляет?
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
да, в LEFT OUTER JOIN [web_access] AS [accesses] ON [User].[id] = [accesses].[web_roles_id] он использует id, а нужно что бы и там и там web_roles_id было
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
так даже не дает залогинится, ничего не происходит
отрабатывает так
Access.belongsTo(User, {foreignKey: 'web_roles_id', targetKey: 'roleId', as: 'user'});
но тоже подставляет id
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
надо дэбажить, ибо это насколько я помню валидный синтаксис
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
const a = User.hasMany(Access, {foreignKey: 'web_roles_id', as: 'accesses'});
   console.log('User: ', a);
   const b = Access.belongsTo(User, {foreignKey: 'web_roles_id', targetKey: 'web_roles_id', as: 'user'});
   console.log('Access: ', b);
   const user = await User.findOne({ where: { email: payload.email.trim() }, include: 'accesses' })
   console.log('user: ', user);
источник

ES

Eugene Stepanyuk in Sequelize - community (eng/ru)
источник