유성에 작은 프로그램을 작성하고 Heroku에서 실행되는 MongoHQ를 사용했습니다. 이 간단한 응용 프로그램은 얼마나 많은 사람들이 전자 메일을 제출했는지 라이브 카운트를 생성합니다. 당신은 여기에서 예를 찾을 수 있습니다 클라이언트 측에이메일을 Meteor 및 MongoDB에 전송하십시오.
Counts = new Meteor.Collection("supporters");
, 내가 실행 : DearJJAbrams 여기 컬렉션입니다
Template.CountWrapper.SupporterCount = function() {
return Counts.find().count();
};
Template.BodySupporter.events({
'click .support-click' : function() {
if ($("#supportInputName").val() != "") {
Supporters.insert({name: $("#supportInputName").val()});
$(".signup-form").fadeOut(600, function() {
$(".thank-you-message").fadeIn(600);
});
}
return false;
}
})
문제이다 사용자의 수가 이메일을 제출할 때 포함하는 것이의 데이터베이스가 카운트 쿼리를 매우 느리게 수행하는 것으로 보입니다. 이것을 처리하는 더 좋은 방법이 있습니까? 감사합니다.
이 방법을 구현하면 매우 비효율적이라는 데 전적으로 동의합니다. 카운트 번호를 저장하는 또 다른 컬렉션을 만들려고했지만 클라이언트 사이트 [meteor update] (http://docs.meteor.com/#update)에서 Meteor의 update() 기능을 사용할 수 없습니다. 방금 신뢰할 수없는 코드가 있습니다 ... 서버 측에서 구현하는 것에 대한 제안 사항이 있습니까? pulish()와 같은 메소드를 사용하거나 가입하여 서버에서이 업데이트를 얻을 수 있습니까? –
신뢰할 수없는 코드 오류는 허용/거부 규칙을 추가해야하며 두 번째로 (클라이언트에서 실행하는 경우) 업데이트하기 위해'_id' 필드를 사용한다는 것을 의미합니다. 지지자 컬렉션의'insert'와'remove''.allow' /'.deny' 규칙을 사용하여 새 레코드를 추가하면 자동으로 카운터가 증가합니다. – Akshat
Akshak, 다른 컬렉션을 구현했습니다. 카운터 전용. 그러나 Supporter 전체 컬렉션은 여전히 클라이언트 측에 다운로드 중입니다. 이제 누군가가 이메일을 입력 필드에 입력했을 때 insert()를 옮기려고합니다. 어쨌든 전체 컬렉션을 다운로드하지 않고 컬렉션에 insert()를 호출 할 수 있습니까? –