포함 모델에 속편화 기능 속성을 추가하는 방법은 무엇입니까?
친구 모델
const Friend = sequelize.define('Friend', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
user_id: {
primaryKey: true,
type: DataTypes.INTEGER
},
invite_user_id: DataTypes.INTEGER,
status: DataTypes.TINYINT //0: send invite, 1: accepted, 2: refuse, 3: cancel
},{
paranoid: true,
});
Friend.associate = function (models) {
this.hasOne(models.Users, {
foreignKey: 'id',
as: 'incoming_user',
sourceKey: 'user_id'
});
this.hasOne(models.Users, {
foreignKey: 'id',
as: 'invite_user',
sourceKey: 'invite_user_id'
});
};
사용자 모델
const Users = sequelize.define('Users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
user_id: DataTypes.STRING,
user_name: DataTypes.STRING,
nick_name: DataTypes.STRING,
email: DataTypes.STRING,
}, {
timestamps: false
});
Users.associate = function (models) {
this.hasMany(models.GameHistory);
this.belongsTo(models.Friend, {
foreignKey: 'user_id'
});
};
게임 히스토리 모델
const GameHistory = sequelize.define('GameHistory', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
room_id: DataTypes.STRING,
user_id: DataTypes.INTEGER,
speed: DataTypes.INTEGER, //words per minute
accuracy: DataTypes.DECIMAL(10,2)
});
game_history.associate = function (models) {
this.belongsTo(models.Users, {
foreignKey: 'user_id'
});
};
친구를 연결하고 싶기 때문에
let my_friends = await Friend.findAll({
where: {
status: 1,
user_id: req.user.id // this is my user id
},
attributes: ['invite_user_id'],
include: {
model: Users,
as: 'invite_user',
include: {
model: GameHistory,
attributes: []
},
attributes: {
include: [
[Sequelize.fn('ROUND', Sequelize.fn('AVG', Sequelize.col('speed')), 2), 'avg_speed'],
[Sequelize.fn('AVG', Sequelize.col('accuracy')), 'avg_accuracy'],
]
},
}
});
이것이 나와 연결된 모든 친구를 반환하기를 바랍니다. 그러나 이것은 모두가 아니라 1명의 친구만 반환합니다. Round, Avg Sequelize 함수가 없으면 모두 올바르게 반환되지만 이러한 속성을 추가하면 1만 반환됩니다.
{
"invite_user_id": 11,
"invite_user": {} //// ----> user data empty here
},
{
"invite_user_id": 8,
"invite_user": {
{
"user_avatar": "http://111.jpg",
"id": 8,
"user_id": "ninja",
"user_name": "xyz",
"nick_name": null,
...
GameHistory에 일부 데이터가 있으면 비어 있는 GameHistory 없이 올바르게 반환되며 친구 1명만 반환됩니다.
그래서 제 질문은 빈 테이블에 속편화 함수(Round, Avg)를 사용하는 방법입니다.
참조:
https://stackoverflow.com/questions/73440280/how-to-add-sequelize-function-attributes-in-include-model
Reference
이 문제에 관하여(포함 모델에 속편화 기능 속성을 추가하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/topninja/how-to-add-sequelize-function-attributes-in-include-model-1d89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)