【问题标题】:Meteor collection using underscore pluck on an array object在数组对象上使用下划线采摘的流星收集
【发布时间】:2014-10-21 18:25:57
【问题描述】:

是否可以在数组对象上使用下划线 pluck 而不仅仅是属性名称

这很好用,因为它是属性名称和字符串 ID 值。

return Collaborators.find({collaboratorId: {$in: _.pluck(topics, '_id')}});

但是如果我需要使用这样的数组怎么办

Meteor.users.find({_id: {$in: _.pluck(topics, 'collaboratorsIds')}});

是collaboratorsIds是

 [ 'btcTd637xvDrgTieJ', 'DLqCAnw7CSakRTy6S', 'btcTd637xvDrgTieJ' ]  

【问题讨论】:

  • collaboratorsIds 已经是数组[ 'btcTd637xvDrgTieJ', 'DLqCAnw7CSakRTy6S', 'btcTd637xvDrgTieJ' ] 了吗?那你就不能Meteor.users.find({_id: {$in: collaboratorsIds}});吗?
  • 是的,它是一个数组,但在主题下
  • topics 长什么样子?
  • 对不起,它不发布是的,它是一个数组,但在主题下。我首先这样做是为了获取 collaboratorsIds var topics = Topics.find({$or:[{userId: this.userId},{collaboratorsIds: this.userId},{inviteeId:this.userId}]}).fetch( );
  • 那么每个主题都有一个合作者列表,你想要所有主题的合作者的联合吗?

标签: meteor underscore.js


【解决方案1】:

给定一系列主题,例如

var topics = [
  {
    _id: "...",
    title: "...",
    collaboratorsIds: ["qwerty", "asdfg", "zxcvbn"],
    ...
  },
  {
    _id: "...",
    title: "...",
    collaboratorsIds: ["yuiop", "hjkl;"],
    ...
  },
  {
    _id: "...",
    title: "...",
    collaboratorsIds: ["qazwsx"],
    ...
  }
]

调用_.pluck(topics, "collaboratorsIds") 会给你一个这样的数组:

[["qwerty", "asdfg", "zxcvbn"], ["yuiop", "hjkl;"], ["qazwsx"]]

您可以使用_.flatten(..., true) 将其展平为一个简单的数组:

_.flatten(_.pluck(topics, "collaboratorsIds"), true)
  -> ["qwerty", "asdfg", "zxcvbn", "yuiop", "hjkl;", "qazwsx"]

【讨论】:

  • 谢谢,这很好用,但我的方法确实是错误的购买这样做我得到了每个主题的所有用户,并且该主题的特定用户需要找到另一种方式。
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2021-01-06
  • 2016-10-09
  • 2023-03-23
相关资源
最近更新 更多