-
글쓴이글
-
2021년 11월 24일 08:51 #20493
장준혁참가자선생님 검색기능에서 에러가 났어요. 주석 처리된 부분은 잘 되지만 검색 조건을 추가하면 Cannot read property 'length' of undefined라고 에러가 떠요. search index를 cdataindex로 바꿨고, 컬랙션에 있는 쿼리의 이름을 검색할려합니다. 스크래핑해온 자료들을 csv로 변환해서 db에 넣는과정에서 counter에 대한 검색 조건도 삭제했습니다.
<strong>server.js</strong>app.get("/search", (요청, 응답) => {
var 검색조건 = [
{
$search: {
index: "cdataindex",
text: {
query: 요청.query.value,
path: '이름'
},
},
}
];console.log(요청.query);
db.collection("cdata")
.aggregate(검색조건)
.toArray((에러, 결과) => {console.log(결과);
응답.render("search.ejs", { posts: 결과 });
});
});// app.get("/search", (res, req) => {
// console.log(res.query.value);
// db.collection("cdata")
// .find({ 이름: res.query.value })
// .toArray((err, result) => {
// console.log(result);// req.render("search.ejs", { posts: result });
// });
// });
<h5><strong>search.ejs</strong></h5>
<div class="container input-group mb-2">
<input class="form-control" id="search-input">
<button class="input-group-append btn btn-danger"
id="search">검색</button>
</div><script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$('#search').click(function(){
var result = $('#search-input').val()
window.location.replace('/search?value=' + result)
})</script>
<ul class="list-group">
<% for (var i=0; i < posts.length; i++){ %>
<li class="list-group-item">
<h4> 이름 : <%= posts[i].이름 %>
</h4>
<p> 뜻 : <%= posts[i].뜻 %> </p>
</li>
<% } %>
</ul>error
TypeError: C:\Users\Admin\Documents\HACKATHON\views\search.ejs:41
39|
40| <ul class="list-group">
>> 41| <% for (var i=0; i < posts.length; i++){ %>
42| <li class="list-group-item">
43| <h4> 이름 : <%= posts[i].이름 %>
44| </h4>Cannot read property 'length' of undefined
그리고 검색조건에 자동완성 기능을 추가하고 싶은데 어떻게 하면 구현할 수 있을까요?
2021년 11월 24일 10:15 #20501
codingapple키 마스터{
$search: {
autocomplete: {
path: "post",
query: "입력한검색어"
},
},
},aggregate() 안에 autocomplete 옵션넣으면 검색어 자동완성에 필요한 데이터 가져다줍니다
2021년 11월 24일 10:19 #20503
장준혁참가자한글말고 영어로 자동완성을 하고싶은데
app.get("/search", (요청, 응답) => {
var 검색조건 = [
{
$search: {
index: "cdataindex",
autocomplete: {
query: 요청.query.value,
path: "이름",
// 제목날짜 둘다 찾고 싶으면 ['제목', '날짜']
},
},
},
{ $sort: { _id: 1 } },
{ $limit: 10 },
{ $project: { 제목: 1, _id: 0 } },
];
여기서 무엇을 더 바꾸면 되나요? -
글쓴이글
- 답변은 로그인 후 가능합니다.