2013-02-23 56 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