개발자
nodejs, mongoose, mongodb 그리고 데이터 확인용으로 mongodbCompass를 사용중임을 알립니다. 현재 A,B 컬렉션이 있고, A 가 B를 참조하고 있습니다. B컬렉션에서 데이터를 삭제하면 B컬렉션에서 삭제되고 로그를 찍어보면 정상적으로 A컬렉션에서도 참조하고 있는 B 데이터가 빠지는 걸 확인했는데 mongodb Compass에서는 바뀌지 않습니다. 원래 mongodb compass에서 느리게 처리되는 건지 살짝 멘붕이 와서 질문드립니다.. -------------------------------- 현재까지 실험결과 B컬렉션 데이터 2개 추가 시 -> A 컬렉션에 대해 findById 결과 --> B 데이터 2개 추가 -> A 컬렉션에 대해 findOne({_id:_id}) 결과 --> B 데이터 2개 추가 B컬렉션에 대해 데이터 1개 삭제시 -> A 컬렉션에 대해 findById 결과 --> B 데이터 1개 , (1개 삭제) -> A 컬렉션에 대해 findOne({_id:_id}) 결과 --> B 데이터 2개 (삭제 x) -> mongoCompass -> B 데이터 1개 , A가 참조하는 B 데이터 2개 (삭제 x) 추가로 B컬렉션 데이터 1개 추가 시 -> A 컬렉션에 대해 findById 결과 --> B 데이터 2개 , (1개 추가) -> A 컬렉션에 대해 findOne({_id:_id}) 결과 --> B 데이터 2개 (이전 1개 삭제후 새로운 참조 데이터 추가 됨 ) -> mongoCompass -> B 데이터 2개 , A가 참조하는 B 데이터 2개 (이전 1개 삭제후 새로운 참조 데이터 추가 됨) stackoverflow 와 mongoose 공식문서를 참고했습니다만 이유는 잘 모르겠습니다.. 코드도 같이 첨부하겠습니다.
1// 데이터 추가 코드
2async UpdateInterest(userId,request_data){
3 try{
4 const {_id,name,platform, genre, country, releaseDate, ageLimit, time} = request_data;
5
6 const ext_user = await UserModel.findById(userId);
7
8 if(!ext_user) return null;
9
10 const result = await ext_user.populate("interest");
11
12 const interestList = result.interest;
13 let update_item = null;
14 if(typeof _id==="undefined"){
15 console.log("_id undefined");
16 const new_interest = new InterestModel({
17 name,
18 platform,
19 genre,
20 country,
21 releaseDate,
22 ageLimit,
23 time
24 });
25 await new_interest.save();
26 interestList.push(new_interest);
27 update_item = new_interest;
28 }else{
29 update_item = await InterestModel.findOne({_id:_id});
30 console.log('to update item :',update_item);
31 if(!update_item) return null;
32 update_item.name = name;
33 update_item.platform = platform;
34 update_item.genre = genre;
35 update_item.country = country;
36 update_item.releaseDate = releaseDate;
37 update_item.ageLimit = ageLimit;
38 update_item.time = time;
39
40 await update_item.save();
41 }
42
43 result.interest= interestList;
44 // console.log(update_item);
45 await result.save();
46 console.log(result);
47 return update_item;
48 }catch(err){
49
50 }
51 }
52
53
54/// 데이터 삭제 코드
55async DeleteInterest(userId, interestId){
56
57 try{
58 console.log(userId);
59 console.log(interestId);
60 const cnt = await InterestModel.deleteOne({_id:interestId});
61 console.log(cnt);
62 if(cnt.deletedCount==0) return null;
63 const result = await UserModel.findById(userId).populate("interest");
64 await result.save();
65 return {cnt};
66 }catch(err){
67
68 }
69 }
70
71//
지금 가입하면 모든 질문의 답변을 볼 수 있어요!