2017-10-13 1 views
0

제공 나는 다음과 같은 코드를 가지고순회 유성 커서 오류

{{#each}}에 현재는 배열, 커서 또는 falsey을 받아 값

HTML 점점 오전 :

<template name='subscribers'> 
    {{#each stat in getPythonStats "WNScan"}} 
    <div> 
    {{stat.name}}: {{stat.value}} 
    </div> 
    {{/each}} 
</template> 

자바 스크립트 :

Template.subscribers.helpers({ 
    getPythonStats(server) { 
    var status = WNstatus.find({'server': server}); 
    if (!status) 
     status = [{'status': 'shutdown'}, {'count': 0}, {'startTime': 'Never'}, {'runTime': 0}]; 
    console.log(status); 
    return status; 
    } 
}); 
,451,515,

콘솔 출력 :

{_id: M…D.ObjectID, server: "WNScan", status: "shutdown", startTime: "2017-10-10 22:40:12", runTime: 5.39, …} 

나에게 커서처럼 보인다. 나는 처음에 문제가 #each을 혼동하는 getPythonStats에 대한 논쟁으로 생각했지만, 도우미가 호출되기 때문에 문제가되지 않는 것으로 보인다. 난 collection.findcollection.findOne (쿼리를 만족하는 문서가 두 개 이상 없으므로 동일한 결과를 반환 함)을 시도했으며 동일한 결과를 보았습니다. 나는 다른 곳에서 거의 동일한 코드를 가지고 있는데, 그 코드는 {{with getPythonStats "WNScan"}}이고 그 코드는 잘 동작한다. 또한 "WNScan" 문서를 찾을 수없는 경우 반환 된 배열에서 동일한 오류가 발생합니다. Meteor의 최신 1.5 버전입니다.

+0

콘솔 출력, 그것은 하나 개의 문서처럼 보인다 . 물론,'{{#each}}'는 그것을 반복하지 않습니다. 'WNstatus'를 명확하게하는 코드를 추가하십시오 - 그게 뭐죠? – Styx

+0

'WNStatus'는 콜렉션 스키마 이름입니다. –

답변

4

난 당신이 status의 각 키를 반복하려는 이해하지만 배열 또는 커서를 필요로 #each status은하지 않습니다!

collection.find은 커서를 반환하고 collection.findOne은 문서 (문서 배열 아님)를 반환합니다.

collection.findOnecollection.find를 사용하는 것과 동일합니다 collection.find().fetch()[0]

자바 스크립트입니다 :

const defaultStatus = { 
    status: 'shutdown', 
    count: 0, 
    startTime: 'Never', 
    runTime: 0 
}; 
Template.subscribers.helpers({ 
    getPythonStats(server) { 
     const status = WNstatus.findOne({ 'server': server}); 
     console.log(status); 
     return _.pairs(status || defaultStatus); 
    } 
}); 

HTML

<template name='subscribers'> 
    {{#each stat in getPythonStats "WNScan"}} 
    <div> 
     <!-- stat is now an array containing key and value --> 
     {{stat.[0]}}: {{stat.[1]}} 
    </div> 
    {{/each}} 
</template> 

_.pairs() documentation

_not_ 커서 생겼
+0

완벽. 'ID'와'server' 엘리먼트를 배열 밖으로 이동하면 멋지게 작동합니다. 나는'_.pair'에 대해 몰랐다. 'find'와'findOne'의 차이점을 명확히 설명해 주셔서 감사합니다. (findOne과 같이 find를 만드는 방법도 있습니다.) 나는 아직도이 것을 스스로 배우고 있습니다. –