【问题标题】:Meteor JS how to get specific object from array from collection?Meteor JS如何从集合中的数组中获取特定对象?
【发布时间】:2019-11-20 23:10:17
【问题描述】:

我正在尝试从 items 数组中获取特定的对象值。我通过将新项目推入项目数组来更新数组,然后我想从数组中获取最后更新的项目。我有上次更新并使用此查询的项目的 _id,但它返回包含所有项目的完整记录。

 let repData = Items.findOne({'_id': rid, 'items._id': newRepId },{ "items.$": 1 });

 {
"errorCode": false,
"data": {
    "_id": "NhNpaN8EHn6uJXfg5",
    "cText": "Let me know you views",
    "aId": "YxEjFqsE3czZZJvgP",
    "cId": "EwDS5iYSEuGThHE38",
    "datePosted": "2019-07-11T07:13:59.177Z",
    "items": [
        {
            "reText": "pppppp sssssssss",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:19:17.722Z",
            "_id": "b87e532807ce37ff83d37a09"
        },
        {
            "reText": "bbbbbb vvvvvvvv",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:22:36.089Z",
            "_id": "28d2bf66a517bfcfaa0fabca"
        },
        {
            "reText": "mmmmmnnnnnn bbbbbbvvvvv",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:23:20.587Z",
            "_id": "85f52e3e3a8ae6d18e98dbb2"
        },


}
 }

【问题讨论】:

标签: meteor


【解决方案1】:

Mongo 搜索将始终为您提供完整的记录,您可以限制您获取的元素,但您不能过滤 items 数组,您必须在之后执行此操作,如下所示:

  const lastItem = repData.items
    .sort((a, b) => new Date(a.datePosted)-new Date(b.datePosted))
    .pop()
  console.log(lastItem)

基本上它按日期对数组进行排序(也许没有必要),然后将最后一个元素弹出到lastItem

【讨论】:

  • 我已经用forEach函数整理出来,然后匹配id
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多