PostgreSql에서 Sequelize를 사용하여 방금 삽입 된 데이터로 데이터를 얻는 방법은 무엇입니까?

카가 타이 하드

"WOD"테이블에 사용자를 추가 한 후 업데이트 된 테이블 값을 얻고 싶습니다. 예를 들어, WOD 테이블에 2 명의 사용자가 있고 세 번째 사용자를 추가 한 후 방금 데이터 (세 번째 사람)를 삽입하여 클라이언트에 응답을 반환하고 싶습니다. 하지만 지금은 업데이트 된 값을받을 수 없기 때문에 처음 2 명의 사용자 만 반환 할 수 있습니다. 물론 삽입 후 업데이트 된 테이블 값을 얻기 위해 다른 쿼리를 만들 수 있지만 더 나은 솔루션이 있습니까? 여기 내 코드가 있습니다.

const addUser = async (req, res) => {
 try {
const { userId, wodId } = req.body;

if (!userId || !wodId) {
  res.status(400).send({ status: false, message: 'need userId and wodId' });
}

const wod = await Wod.findByPk(wodId, {
  include: [
    {
      model: User,
      as: 'Participants',
      through: { attributes: [] }
    }
  ]
});
//check capacity if full.
if (wod.Participants.length >= wod.capacity) {
  res
    .status(403)
    .send({ status: false, message: 'Capacity of this class is full!' });
}
const result = await wod.addParticipants(userId);

res.status(201).json({ status: !!result, wod });
} catch (error) {
res.status(500).send({ status: result, message: error.message });
console.log(error.message);
  }
};
그것은

다 대다 연관의 결과로 sequelize.sync는 우리를 위해 몇 가지 함수생성 합니다. addParticipants 함수를 사용하고 있으며 이는 assocation (userwod) 테이블에 추가 된 배열을 반환합니다.

이 배열에서는 다음과 같이 실행하기 때문에 일부 id 필드 (join table fields)를 찾을 수 있습니다 INSERT INTO 'user_wods' ('user_id''wod_id') VALUES (2,1). 추가 된 사용자 정보를 반환하려면 SELECT * FROM 'user' WHERE 'id'=2.

세 번째 사람을 가져 오려면 reload 함수를 호출해야합니다.

await wod.reload()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관