【问题标题】:Meteor: how to extract id of first item from a collectionMeteor:如何从集合中提取第一项的 id
【发布时间】:2014-10-20 19:44:54
【问题描述】:

我有一个 Meteor 集合,想获取第一个项目的 id。该查询有一个 limit 1 子句,如果有的话,我只想要第一个项目的 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 );

  });

我知道查询正在运行并且当前正在返回一条记录,但我不知道如何访问该记录。

【问题讨论】:

    标签: meteor


    【解决方案1】:

    find() 返回一个游标。而不是使用forEach,而是使用fetch,它将所有数据从游标提取到一个数组中。所以在你的情况下:

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

    (当您确定数据存在时。否则检查数组是否为空)

    【讨论】:

    • 如果你只想获取一个文档,应该使用findOne(selector)而不是find(selector).fetch()[0]
    • 是的,这是等价的
    • 在我的应用程序中,这与删除和重新加载游戏的调用相同。此行会导致竞争条件。
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 2016-01-25
    • 2010-12-12
    • 1970-01-01
    • 2020-10-20
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多