2015-01-29 4 views
0

남아있는 머리카락을 절약하는 데 도움을 주셔서 감사합니다. node.js + express + mongoDB + EJS를 사용하여 기본 CRUD 응용 프로그램을 빌드하고 있습니다. EJS는 끔찍한 기록을 가지고있어서 우리에게 초보자가 그것을 배우기가 정말 어렵다고 말하고 싶습니다. 여기 제가 가지고있는 문제가 있습니다.EJS 정렬 필터가 작동하지 않습니다.

"vehicles"라는 객체가 있는데 폼 선택 요소에 표시하고 있습니다. 여기 내 EJS가 있습니다 :

<% vehicles.forEach(function(el){ %> 
    <option value="<%= el.vehicleModel %>"><%= el.vehicleModel %></option> 
<% }); %> 

문제는 MongoDB가 전달한 객체에서 픽업 되었기 때문에 정렬되지 않았습니다. 나는 인터넷 검색을했고 this nice tutorial을 찾았다. EJS는이 문제를 해결하기위한 필터를 가지고 있습니다. 그래서 나는 다음과 같은 코드를 시도 :

<% vehicles.forEach(function(el){ %> 
    <option value="<%=: el.vehicleModel | sort %>"><%=: el.vehicleModel | sort %></option> 
<% }); %> 

를하지만 나에게 다음과 같은 오류가 발생합니다 :

개체 프로토 타입은 객체가 될 수는 null

그래서 뭔가 내 코드 잘못 생각했다. 다른 필터 (downcase)를 사용하여 다음과 같이 사용했습니다.

<% vehicles.forEach(function(el){ %> 
    <option value="<%=: el.vehicleModel | downcase %>"><%=: el.vehicleModel | downcase %></option> 
<% }); %> 

그리고 작동합니다. 문자는 소문자입니다. 그러면 정렬 필터가 작동하지 않는 이유는 무엇입니까?

P/S : 내 다른 모발 간다 ..

+0

이 질문은 해결되었지만 필터가 더 이상 사용되지 않으므로 사용을 중단해야합니다. –

답변

1

정렬 필터는 입력으로 배열되지 문자열 걸린다. 다음과 같은 것이 작동합니다 :

<%=: vehicles | sort_by:'vehicleModel' | map:'vehicleModel' %> 

찾고있는 것과 동일한 결과가 나오지 않을 수도 있지만. 이 경우, js로 정렬하기 전에 정렬해야합니다. 차량의 데이터 세트가 꽤 큰 경우 mongodb 쿼리에서 바로 정렬하는 것이 좋습니다.

희망이 있습니다.

+0

대단히 감사합니다. Akash .. 이것은 데이터를 정렬합니다 .Aology는 noobie 질문이지만 일단 배열을 정렬하면이 변수를 변수에 할당하여 .length로 가져 와서 전달할 수 있습니까? 각 양식 요소를 통해? – Aftab

+0

@Aftab 이것은 필터 일뿐입니다. 이런 방식으로 항목을 정렬하면 할당 할 수 없습니다. 가장 좋은 방법은이 줄 앞에'[] .sort()'를 사용하여 배열을 정렬하는 것입니다. 당신은 그것을 훨씬 잘 제어 할 수 있습니다. –

+0

고마워요 Akash .. 결국 마침내 말이야 .. EJS 태그 안에 자바 스크립트를 기본적으로 실행할 수 있습니다. – Aftab

관련 문제