【问题标题】:Meteor.update with a found _id not this._idMeteor.update 找到 _id 而不是 this._id
【发布时间】:2015-10-26 19:40:27
【问题描述】:

我正在尝试通过拉动我找到的列表中的第一个 obj 来查找 Id 来使用 Meteor.update。请看下面的代码。如果我们有可以提供帮助的帖子,我会很高兴看到另一篇帖子。

minusSkip: function(){
  var techQOrder = _Techs.find({
      queue: true
    }, {
      sort: {
        status: -1,
        // weight: -1,
        timesincelast: 1}});
        techQOrder = techQOrder.fetch()[0]

        var techId = techQOrder._id
        if (techQOrder.skipRound >= 1) {
  _Techs.update({
    id: techQOrder._id
  },
  {
      $set: {
        timesincelast: new Date()
      },
      $inc: {
        skipRound: -1
      }
    });
console.log("server", techQOrder._id, techQOrder.skipRound);
}
}

【问题讨论】:

    标签: meteor collections


    【解决方案1】:

    您可以使用 findOne 代替 find - 只需返回它找到的第一个文档。然后获取您的 id:

    techQOrder._id;
    

    如果出于某种原因您想避免使用 findOne,您可以在查询末尾添加 .fetch(),然后通过

    获取 id
    techQOrder[0]._id 
    

    【讨论】:

    • 我认为我不能使用 findOne,因为我想对集合进行排序,而不是将第一个 obj 从该集合中拉出并编辑它。主要目标是制作跳过机制。这是轮换队列的一部分,我想保持订单的完整性,但当他们位于队列顶部时,它会自动跳过此人。这是检查它们的代码,它们在队列中移动。
    • 在这种情况下 findOne 仍然有效 - 您的收藏仍在排序中,但您只能访问第一个文档
    • 据我了解,这正是您想要实现的目标
    猜你喜欢
    • 2022-01-17
    • 2011-10-25
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多