dms 의 서비스에서 코드를 봐도 모르겠는 부분이 있어서 질문합니다.
function getKeyByValue(object, value) {
return Object.keys(object).find((key) => object[key] === value);
}
...
async getWorkspaceDMChats(
url: string,
id: number,
myId: number,
perPage: number,
page: number,
) {
return this.dmsRepository
.createQueryBuilder('dms')
.innerJoinAndSelect('dms.Sender', 'sender')
.innerJoinAndSelect('dms.Receiver', 'receiver')
.innerJoin('dms.Workspace', 'workspace')
.where('workspace.url = :url', { url })
.andWhere(
'((dms.SenderId = :myId AND dms.ReceiverId = :id) OR (dms.ReceiverId = :myId AND dms.SenderId = :id))',
{ id, myId },
)
.orderBy('dms.createdAt', 'DESC')
.take(perPage)
.skip(perPage * (page - 1))
.getMany();
}
...
async createWorkspaceDMChats(
url: string,
content: string,
id: number,
myId: number,
) {
const workspace = await this.workspacesRepository.findOne({
where: { url },
});
const dm = new DMs();
dm.SenderId = myId;
dm.ReceiverId = id;
dm.content = content;
dm.WorkspaceId = workspace.id;
const savedDm = await this.dmsRepository.save(dm);
const dmWithSender = await this.dmsRepository.findOne({
where: { id: savedDm.id },
relations: ['Sender'],
});
const receiverSocketId = getKeyByValue(
onlineMap[`/ws-${workspace.url}`],
Number(id),
);
this.eventsGateway.server.to(receiverSocketId).emit('dm', dmWithSender);
}
...
1. getKeyByValue가 어떠한 역할을 하나요? 소켓을 사용할 때 필요한 부분이라고 짐작만 하고 있습니다. 코드에 대한 간단한 해석과 역할을 간단하게 알려주시면 감사하겠습니다.
2. async getWorkspaceDMChats 기능에서 .innerJoinAndSelect('dms.Sender', 'sender') 부분이 헷갈립니다. dms라는 별칭과 Sender라는 테이블이 join 되는 부분이라고 생각하고 있었는데, Sender 라는 테이블이 존재했었나요?
저는 여태까지 dms.Workspaces 이런식으로 DMs와 Workspaces 테이블을 join 하는 부분이라고 생각하고 있었는데 잘못 알고 있는건가요..?
3. async createWorkspaceDMChats 중 const dmWithSender 부분에서 2번과 비슷한 내용의 질문인데, relations: ['Sender']가 나오는데 이 부분 또한 테이블과의 관계를 나타내는 부분으로 알고있었는데 Sender라는 테이블이 존재하는건가요?
답변 1
0
1. onlineMap(소켓아이디: 내 아이디 꼴)에서 내 아이디가 들어있는 소켓 아이디를 찾아내는 겁니다.
2. Join이 맞고요. Sender는 User입니다. Sender와 Receiver 둘 다 User와 연결되게 해야 해서 이름을 바꾼 것이고요. DM 엔티티 보시면 Sender가 User 엔티티와 연결되어 있음을 보실 수 있습니다.
3. 2번과 마찬가지 답변입니다.
강의자료는 어디서 다운받나요?
0
145
4
질문 있습니다.
0
320
3
코드 편집기 확장 프로그램
0
220
2
(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?
0
165
2
(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문
0
179
3
로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.
0
163
2
로그인방법이 고민됩니다.
0
197
2
yarn seed 명령어 실행 시 데이터 삽입 안됨
0
305
4
yarn run db:create 시에 발생하는 데코레이터 오류
0
249
2
npm run db:create 시에 발생하는 decorating 오류
0
245
2
RxJS 디버깅 질문 있습니다.
0
200
3
CacheManager에 대해 질문 있습니다.
0
185
2
로깅은 어떻게 하는게 효율적일까요?
0
240
1
CORS 질문 있습니다.
0
428
2
쿠키 옵션에 대해서 질문 있습니다.
0
190
2
로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??
0
458
1
401 unauthorized문제
0
306
1
가드의 장점에 대해서 질문이 있습니다.
0
234
1
로그 관리에 대해 질문 있습니다.
0
256
2
CORS 에러 질문 있습니다.
0
329
2
배포 환경 DB 연결 질문 있습니다.
0
418
2
socket io 미 연결 문제 (nest & flutter)
1
1169
3
no elements in sequence 에러 관해서 질문이 있습니다.
0
466
1
start:dev-backup으로 돌리면 핫 리로딩이 되요 정상인가요?
0
327
1





