2013-02-23 61 views
0

我有一個看起來像下面的條目:貓鼬找到最新的入門

{ 
    "__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.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"); 
       } 
      }); 
     }; 
    }); 
}); 

有沒有一種方法,我可以檢查如果socket.username等於已輸入的最新行上的用戶?

例如上面Player123是最後一個進入一條線,所以如果Player123再次嘗試,它只是發出錯誤,但如果Player456進入一條線,然後Player123能夠再次

我想創建一個簡單的基於回合的遊戲,檢查以確保一個人不會在輪到他們時不能輸入一行

+0

在你的問題中甚至沒有問號。 – thejh 2013-02-23 17:03:32

+0

@thejh看起來像我保存提交之前,我完成了問題,現在更新 – Tam2 2013-02-23 17:07:17

回答

1

您可以直接檢查story對象中lines陣列中的最後一項。如在:

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

謝謝!,沒有意識到我可以這樣做,我想我必須排序和限制故事對象。但你的解決方案完美無缺! – Tam2 2013-02-23 17:46:33

+0

有沒有辦法檢查它的第一個條目?因爲如果你的第一個人進入這條線,那麼因爲沒有以前的人來檢查,所以我一直在想這樣的事情? 'story.lines [story.lines.length-1] .user == socket.username && story.maxlines <10'但是這似乎不起作用 – Tam2 2013-02-24 11:52:03

+0

@ Tam2當然,只有在'lines'不是空。更新了答案。 – JohnnyHK 2013-02-24 12:50:52