I have a postgres database which look like this :
I want to query those data and return only some of it. Below is the function that I wrote.
citizenController.js
exports.getAllCitizen = async (req, res) => {
const { page, size } = req.query;
//Check if theres a NIK filter
const nik = req.query.nik;
const condition = nik ? { nik: { [Op.iLike]: `%${nik}%` } } : null;
//Pagination
const { limit, offset } = getPagination(page, size);
try {
const response = await Penduduk.findAndCountAll({
where: condition,
attributes: ["id", "nik", "profil_penduduk"],
limit,
offset,
});
const data = getPagingData(response, page, limit);
return res.status(200).send(data);
} catch (err) {
console.log(err);
}
};
Here is the response from function above :
The problem is, I don't want to return all of the profil_penduduk object data, I just want to get the nama , alamat, and status_warga from it.
How can I achieve that ? I tried to do like :
attributes: ["id", "nik", "profil_penduduk.nama","profil_penduduk.alamat","profil_penduduk.status_warga"]
But it didn't work.
Best way to get the details of reference table to use include as
const response = await Penduduk.findAndCountAll({
where: condition,
attributes: ["id", "nik"],
include: [
{
model: profil_penduduk, // name of reference table
attributes: ['nama' , 'alamat', 'status_warga'],
}
],
limit,
offset,
});
```