Есть приложение где нужно добавить кое-какие функции, есть строка с данными о ставке где в поле userId указан id пользователя и связна с таблицей users, так вот, нужно получить строка ставки таким образом, чтобы в нём была и информация о пользователе, чтобы не делать отдельный запрос, перепробовал почти всё, поэтому скину часть кода внизу, может быть что-то не замечаю.
Поиск в дб
async getMinesGame():Promise<HistoryMinesGame[]> {
return this.db.MinesGame.findAll({
where :{
winAmount:{[Op.not]: null}
},
include: [{
model: this.db.User,
as: 'userId'
}]
//Перепробовал очень много вариантов не один не сработал
});
}
Файл models->MinesGame
import { BelongsTo, BelongsToGetAssociationMixin, DataTypes, Model, Sequelize } from 'sequelize';
import { AssociableModelStatic } from './index';
import { User } from './User';
export enum MinesGameStatus {
InGame = 'InGame',
Ended = 'Ended',
}
export interface MinesGame extends Model {
readonly id: string;
readonly userId: string;
readonly betAmount: number;
readonly winAmount: number;
readonly bombsCount: number;
readonly fieldConf: number;
readonly stepsConf: number;
readonly status: MinesGameStatus;
readonly clientSeed: string;
readonly serverSeed: string;
readonly nonce: number;
readonly createdAt: Date;
readonly updatedAt: Date;
getUser: BelongsToGetAssociationMixin<User>;
}
export interface HistoryMinesGame extends MinesGame {
readonly winAmount: number;
}
export type MinesGameStatic = AssociableModelStatic<
MinesGame,
{
User: BelongsTo<MinesGame, User>;
}
>;
export const initMinesGame = (sequelize: Sequelize): MinesGameStatic => {
const MinesGame = sequelize.define('MinesGame', {
id: {
type: DataTypes.INTEGER.UNSIGNED,
primaryKey: true,
autoIncrement: true,
get(this: MinesGame) {
return ((this.getDataValue('id') as unknown) as number).toString();
},
},
userId: {
type: DataTypes.INTEGER.UNSIGNED,
get(this: MinesGame) {
return ((this.getDataValue('userId') as unknown) as number).toString();
},
},
betAmount: {
type: DataTypes.DOUBLE(8, 2),
allowNull: false,
},
winAmount: {
type: DataTypes.DOUBLE(8, 2),
allowNull: true,
},
bombsCount: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
},
fieldConf: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
},
stepsConf: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
defaultValue: 0,
},
status: {
type: DataTypes.ENUM(...Object.values(MinesGameStatus)),
allowNull: false,
defaultValue: MinesGameStatus.InGame,
},
clientSeed: {
type: DataTypes.STRING,
allowNull: false,
},
serverSeed: {
type: DataTypes.STRING,
allowNull: false,
},
nonce: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
},
}) as MinesGameStatic;
MinesGame.associate = database => {
MinesGame.User = MinesGame.belongsTo(database.User, { as: 'user'});
};
return MinesGame;
};