2013-02-23 6 views
0

나는 다음과 같은 항목이 : 내가 확인할 수있는 방법이 있나요몽구스 찾을 최신 항목

socket.on('sendchat', function (data) { 
    Story.findOne({ sid: socket.room }, function(err, story){ 
     if (err) { 
      console.log(err); 
     } 
     else if(story == null) { 
      console.log(err); 
     } 
     else { 
      io.sockets.in(socket.room).emit('updatechat', socket.username, data); 
      story.maxlines = story.maxlines - 1; 

      if (story.maxlines == 0) { 
       // End Game Script - Redirect to view page 
       io.sockets.in(socket.room).emit('gameover', slugs(story.title), socket.room); 
      } 
      //Save Story to DB 
      story.lines.push({ 
       user: socket.username, 
       text: data 
      }); 
      story.save(function(err, story){ 
       if (err) { 
        console.log(err); 
       } 
       else { 
        console.log("Story Updated"); 
       } 
      }); 
     }; 
    }); 
}); 

:

{ 
    "__v": 10, 
    "_id": "50f8050ed714645500000002", 
    "sid": "DI7gZ0sprJ", 
    "lines": [ 
    { 
     "text": "Well that's what some people say anyway", 
     "_id": "50f80526d714645500000003", 
     "user": "Player456" 
    }, 
    { 
     "text": "They're people just like the rest of us", 
     "_id": "50f805925543712caf000005", 
     "user": "Player123" 
    }, 
    ], 
    "title": "Test", 
    "maxlines": 0 
} 

와는 socket.io 스크립트를 아래와 같이가 socket.username이 입력 된 최신 행의 사용자와 같은 경우? Player123 위의 예를 들어

는 줄을 입력 할 수있는 마지막, 그래서 Player123 다시 시도하면 그냥 오류를 방출하지만, Player456이 줄을 입력하면, 다음 Player123는에 I가 시도하고 다시

수 있습니다 자신의 차례가 아닐 때 사람이 줄을 입력 할 수 없는지 확인하는 간단한 회전 기반 게임을 만듭니다.

+0

질문에 물음표가 없습니다. – thejh

+0

@thejh는 내가 질문을 완료하기 전에 제출 한 내용을 저장 한 것처럼 보입니다. 지금 업데이트 됨 – Tam2

답변

1

lines 배열의 마지막 항목을 story 개체에서 직접 확인할 수 있습니다. 다음과 같이 :

if (story.lines.length && 
    story.lines[story.lines.length-1].user === socket.username) { 
    // error, same user is trying to enter another line 
} 
+0

감사합니다., 그런 식으로 할 수 있다는 것을 깨닫지 못했습니다. 이야기 개체를 정렬하고 제한해야한다고 생각했습니다. 그러나 당신의 솔루션은 완벽하게 작동했습니다! – Tam2

+0

첫 번째 항목이 있는지 확인하는 방법이 있습니까? 왜냐하면 당신이 첫 번째 사람이 선을 입력하는 경우 그것은 이전에 점검 할 것이 없기 때문에 오류가 있기 때문에 나는 이와 같은 것을 생각하고 있었습니까? 'story.lines [lines.lines.length-1] .user == socket.username && story.maxlines <10' 그러나 작동하지 않는 것 같습니다. – Tam2

+0

@ Tam2 물론,'lines'이 아니라고 만 확인하십시오. 빈. 업데이트 된 답변. – JohnnyHK