8 글 보임 - 1 에서 8 까지 (총 8 중에서)
-
글쓴이글
-
2023년 5월 28일 00:34 #84840
김민서참가자MongoDB Atlas에서 task에 대한 index를 추가했습니다 Field에 { "task": "text" } 로 주라는대로 잘 줬고, app.get('/search', async (req,res) => { try { // query string으로 전달된 task 이름을 기준으로 검색 const data = await db.collection('post').find({$text: {$search: req.query.value}}).toArray(); res.render('search.ejs', {posts: data}); } catch(err) { console.log(err); res.status(500).send(err); } }); 이런 식으로 불러오려했는데 검색만 하면` {"ok":0,"code":291,"codeName":"NoQueryExecutionPlans","$clusterTime":{"clusterTime":{"$timestamp":"7237883225136168961"},~~ 에러 메시지가 창에 뜹니다.. GPT한테 물어보니 NoQueryExecutionPlans 이 적합한 index를 찾지 못했을 때 나타나기도 한다던데, 해결법을 모르겠습니다. 원인이 뭘까요?
2023년 5월 28일 16:34 #84900
김민서참가자네, 강의 후반부 참고해서 .aggregate() 를 사용해보았습니다. 하지만 또 에러가 발생하더군요 MongoServerError: $search is not allowed with 'apiStrict: true' in API Version 1 공식 홈페이지 찾아보니 apiStrict: false로 정의하면 된다길래 strict 속성을 바꿔주니 잘 동작했습니다. 또 find() 를 이용한 text index 검색도 잘 동작하더라고요! 혹시 strict: true 인채로 index 활용한 검색을 하는 방법은 없을까요?
2023년 5월 28일 21:44 #84951
김민서참가자감사합니다 선생님! 추가 질문도 여기 대댓글로 달게요 https://codingapple.com/forums/topic/%eb%b0%b0%ed%8f%ac%ec%8b%9c-%ec%97%90%eb%9f%ac%ea%b0%80-%eb%b0%9c%ec%83%9d%ed%95%98%eb%8a%94%eb%8d%b0-%ea%b2%80%ec%83%89%ed%95%b4%eb%b4%90%eb%8f%84-%eb%aa%a8%eb%a5%b4%ea%b2%a0%ec%8a%b5%eb%8b%88/ #74651 이분과 동일한 에러 메시지가 뜨는데 설치된 node.js 19 버전 대신 18버전을 설치한 후 서버에 올려야하나요?
2023년 5월 29일 16:18 #85025
김민서참가자엇.. 확인해보니 node.js는 v18.16.0 LTS 버전 잘 쓰고 있었어요ㅋㅋㅋ node_modules/mongodb/lib/operations/add_user.js 파일의 16번째 줄을 "this.options = (options !== null && options !== undefined) ? options : {};" 이렇게 직접 수정하고 'gcloud app deploy' 해도 동일한 에러 메시지가 뜨면서 실패하네요 /app/node_modules/mongodb/lib/operations/add_user.js:16 this.options = options ?? {}; ^ 대신 tsconfig.json 파일의 "importsNotUsedAsValues": "error", 이 부분에 빨간 밑줄이 쳐졌습니다 이미 deprecated된 option이라네요 vscode 도움말 상으로는.. node_modules의 파일을 다이렉트로 수정해도 업로드 시 변경사항 반영이 안되나요? 또 tsconfig.json 파일이 원인일 가능성도 있을까요?
감사합니당
-
글쓴이글
8 글 보임 - 1 에서 8 까지 (총 8 중에서)
- 답변은 로그인 후 가능합니다.