在序列化Node js上建立一对多的关系



我一直在尝试在续集中制作一对多的关系,我只想制作"jadwall "数据有"剂量"数据

这是带有foreignKey

的JadwalModel
// Main Folder > models > JadwalModel.js
import { Sequelize } from "sequelize";
import db from "../config/Database.js";
import Dosen from "./DosenModel.js";
const { DataTypes } = Sequelize;
const Jadwal = db.define('jadwal', {
id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
id_dosen: {
type: DataTypes.INTEGER
},
room: {
type: DataTypes.STRING
},
date: {
type: DataTypes.DATE
}
}, {
freezeTableName: true
});
// Dosen.hasMany(Jadwal, { foreignKey: 'id_dosen' });
// Jadwal.belongsTo(Dosen, { foreignKey: 'id_dosen' }); // This return ReferenceError: Cannot access 'Dosen' before initialization
export default Jadwal;

这是Dosen模型,primaryKey/ReferenceKey

// Main Folder > models > DosenModel.js
import { Sequelize } from "sequelize";
import db from '../config/Database.js';
import Jadwal from "./JadwalModel.js";
const { DataTypes } = Sequelize;
const Dosen = db.define('dosen', {
id_dosen: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
id_matkul: {
type: DataTypes.INTEGER
},
id_user: {
type: DataTypes.INTEGER,
},
name: {
type: DataTypes.STRING
},
nip: {
type: DataTypes.INTEGER
},
username: {
type: DataTypes.STRING
},
password: {
type: DataTypes.STRING
},
refresh_token: {
type: DataTypes.TEXT
}
}, {
freezeTableName: true
});
// Dosen.hasMany(Jadwal, { foreignKey: 'id_dosen' });
// Jadwal.belongsTo(Dosen, { foreignKey: 'id_dosen' });
export default Dosen;

这是jadwal控制器获取数据的文件

// Main Folder > controllers > Jadwal.js
import Dosen from '../models/DosenModel.js';
import Jadwal from '../models/JadwalModel.js';
export const getJadwals = async(req, res) => {
try {
const jadwal = await Jadwal.findAll({
attributes: ['id', 'id_dosen', 'room', 'date']
}, {
include: [{ model: Dosen }]
});
res.status(200).json(jadwal);
} catch (error) {
console.log(error);
}
}

这是示例结果

// Result
[
{
"id": 1,
"id_dosen": 1,
"room": "Ruang TR 2",
"date": "2022-05-26T10:00:00.000Z"
}
]
// The result that i want is
[
{
"id": 1,
"dosen": {
"name" : "dosenName"
},
"room": "Ruang TR 2",
"date": "2022-05-26T10:00:00.000Z"
}
]

这不是错误,我只是忘记了,因为我只获取几个字段而不是全部,所以我决定删除属性并获得数据关系

attributes: ['id', 'id_dosen', 'ruangan', 'tanggal']

最新更新