2017-03-28 4 views
-1

mongodb에 조건을 저장하고 쿼리하고 검사 한 다음 조건 확인의 결과로 작업을 수행하는 방법을 찾고 있습니다. 여기Mongodb의 유연한 전자 메일 알림 조건

우선 내가

{ 
    "name": "My Event", 
    "created": 1490726092221, 
    "startDate": 1490726092221, 
    "endDate": 1490726097810, 
    "notifications": [ 
    { 
     "message": "{event.Name} Created", // message template 
     "status": 0, // 0=initialized 1=failed 2=sent 
     "sendDate": null, // date that the notification was sent 
     "sentTo": ["c2a34dfg32c1d4583e73a123"] //members to send notification to 
     "criteria": { 
     "script": "event.created >= 0 && this.status < 2" 
     } 
    } 
    ], 
    "members": [ 
    { 
     "_id": "c2a34dfg32c1d4583e73a123" // Reference to the user 
    } 
    ] 
} 

사용 사례를 고려하고 이벤트 객체의 예입니다, 나는 이벤트에 대한 알림을 customizated 갖고 싶어. 그래서 이벤트가 스케줄 된 경우, 이벤트 시작일이 며칠 내에있을 때, 멤버가 조인 할 때 등과 같은 이벤트가 생성 될 때 알림을받을 수 있습니다.이 모든 것을 자바 스크립트 함수로 코딩하고 열거 형으로 해당 이벤트에 대응할 수 있습니다 알림 기준에 대해 또는 특정 이벤트가 발생할 때를위한 후크가있는 경우 이는 엄격한 접근 방식처럼 보입니다.

내가 상상하고있는 것은 문서에 문자열로 저장 될 수있는 쿼리 언어이며, 쿼리 및 평가가 가능하며 알림을 트리거하기위한 부울을 반환합니다.

스크립트는 이벤트를 입력 변수로 가질뿐만 아니라 스크립트에 사용할 수있는 몇 가지 특수한 입력 변수가 필요합니다.

이것은 자바 스크립트와 eval()을 사용하여 수행 할 수 있지만 그게 무서워요. 이 유스 케이스에 사용할 수있는 다른 도구가 있습니까? 또는이 문제에 대한 더 나은 접근 방법에 대한 제안이 있습니까?

+0

이 답변에 나와있는 것과 같은 일을 연구하여 시작할 것 : { 스크립트 : "someScript.js" } like'require ("/../ notification-scripts /"+ doc.criteria.script)() " –

+0

괜찮은 생각입니다. 그래도 하드 코드 된 스크립트가 필요합니다. 내 목표는 사용자가 만든 알림 집합을 만드는 것입니다. 어떤 작업을 안전하게 수행하기가 어려우므로 끝내야 할 수도 있습니다. – Sup3rb0wlz

답변

0

MongoDB 백엔드가있는 워크 플로우 엔진을 구축하는 것 같습니다. 나는 당신이, 기준 문서를 검색시 매개 변수 (심지어 문서를 자신의 필드)로 전화하여 문서의 JS 스크립트의 이름을 저장할 수 Workflow engine in Javascript

+0

유스 케이스 엔진에서 워크 플로우 엔진을 사용하는 방법에 대해 좀 더 자세히 알고 싶습니까? – Sup3rb0wlz

+0

워크 플로우 엔진에 대해 읽고 이해해야합니다. 당신이 그렇게했다면, 당신은 그 질문을하지 않았을 것입니다. 제가 할 수있는 일은 반복해서 말하며 워크 플로우 엔진에 대해 자세하게 읽으므로 바퀴가 존재한다는 것을 알지 못한 채로 바퀴를 재발 명하지 마십시오. 나는 당신이 google '워크 플로우 엔진'을 기꺼이하지 않기 때문에 다른 질문으로 낭비되는 시간을 갖는 것에 감사하지 않는다. 그래서 나는 당신의 질문을 downvoting 오전. –

+0

댓글 전체가 시간 낭비였습니다. 나는 그것을 연구하고 나의 과정에서 FSM에 대해 충분히 배웠다. 워크 플로우 엔진에 대한 내용을 읽었으며 응용 프로그램과의 연결을 이해하지 못했기 때문에 후속 질문을 통해 더 많은 정보를 얻을 수있었습니다. 나는 당신의 제안이 적용 가능하다는 것을 의심하지 않지만, 나는 단지 약간의 연구 후에 그것을 이해하지 못한다. 코멘트에 답하기 전에 내가 무엇을했는지 추측하지 마십시오. 나는 아직도 이해할 수 없을 것이다. 정확하게이 사이트가있는 것이다. 어쨌든 당신의 대답과 의견에 감사드립니다. – Sup3rb0wlz