sequelize / sequelize-typescript

Decorators and some other features for sequelize

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Associations keys not replaced by include

M1000fr opened this issue · comments

Issue

When i try to get a ModelA include ModelB the key of the association is undefined but in VALUE.dataValues.ASSOCIATION i've the values

Example:

User Table

import { Column, HasMany, Model, Table } from "sequelize-typescript";
import { Post } from "./Post";

@Table
export class User extends Model<User> {
	@Column({
		allowNull: false,
		unique: true,
		primaryKey: true,
	})
	declare id: number;

	@HasMany(() => Post, { as: "CreatedPosts" })
	CreatedPosts: Post[];
}

Post Table

import {
	BelongsTo,
	Column,
	ForeignKey,
	Model,
	Table,
} from "sequelize-typescript";
import { User } from "./User";

@Table
export class Post extends Model<Post> {
	@Column({
		allowNull: false,
		unique: true,
		primaryKey: true,
	})
	declare id: number;

	@ForeignKey(() => User)
	@Column
	declare userId: number;

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

Try to get user with association post

const sequelize = new Sequelize({
	dialect: "sqlite",
	storage: "database.sqlite",
	logging: false,
	sync: { alter: true },
	define: {
		timestamps: false,
		underscored: true,
	},
});

sequelize.addModels([Models.User, Models.Post]);

sequelize.sync().then(() => {
	Models.User.findByPk(1, {
		include: [Models.Post],
		plain: true,
	}).then((user) => {
		console.log(user); // User Object
		console.log(user.CreatedPosts); // Undefined
		console.log(user.dataValues.CreatedPosts); // Array of User Posts
	});
});

return

User {
  dataValues: { id: 1, CreatedPosts: [ [Post] ] },
  _previousDataValues: { id: 1, CreatedPosts: [ [Post] ] },
  uniqno: 1,
  _changed: Set(0) {},
  _options: {
    isNewRecord: false,
    _schema: null,
    _schemaDelimiter: '',
    include: [ [Object] ],
    includeNames: [ 'CreatedPosts' ],
    includeMap: { CreatedPosts: [Object] },
    includeValidated: true,
    attributes: [ 'id' ],
    raw: true
  },
  isNewRecord: false,
  CreatedPosts: undefined
}
undefined
[
  Post {
    dataValues: { id: 12, userId: 1 },
    _previousDataValues: { id: 12, userId: 1 },
    uniqno: 1,
    _changed: Set(0) {},
    _options: {
      isNewRecord: false,
      _schema: null,
      _schemaDelimiter: '',
      include: undefined,
      includeNames: undefined,
      includeMap: undefined,
      includeValidated: true,
      raw: true,
      attributes: undefined
    },
    isNewRecord: false,
    user: undefined
  }
]

Versions

  • sequelize: ^6.35.1
  • sequelize-typescript: ^2.1.6
  • typescript: 4.9.5

Issue type

  • bug report
  • feature request