2014-10-20 74 views
1

我有一個流星集合,並希望獲得第一個項目的ID。該查詢有一個限制1條款,我只想要第一個項目的ID,如果有的話。我無法弄清楚如何編寫代碼。流星:如何從一個集合中提取第一個項目的ID

這是我的查詢。

var myGames = Games.find(
    { 
     game_minutes: {$gt: MinutesSinceMidnightNow}, 
     court_id: court, 
     game_date: {$gt: lastMidnight} 
     }, 
     { 
     sort: { "game_minutes": 1}, 
     limit: 1 
     }); 

然後,如果我迭代結果,我的應用程序將退出比賽。

myGames.forEach(function (game) { 

    gameId = game._id; 

    console.log('gameId: ' + gameId); 

    }); 

我知道查詢正在工作,並且當前正在返回記錄,但我無法弄清楚如何訪問記錄。

回答

7

find()返回一個遊標。而不是使用forEach使用fetch它將從遊標獲取所有數據到一個數組。所以你的情況:

var id = myGames.fetch()[0]._id; 

(當你確信數據是存在的,否則檢查,如果數組不爲空)。

+2

如果你只是想獲取一個文件,應該使用'findOne(選擇器)而不是'find(selector).fetch()[0]'。 – 2014-10-20 12:38:59

+0

是的,這是等效的 – 2014-10-20 13:50:20

+0

在我的應用程序中,我有這個功能與調用來移除和重載遊戲相同。這條線導致競爭條件。 – markhorrocks 2014-10-21 13:04:03

相關問題