【问题标题】:How can I get a nested object within lokijs Collection如何在 lokijs Collection 中获取嵌套对象
【发布时间】:2015-07-29 02:55:38
【问题描述】:

我正在使用 lokijs 来存储一些我需要使用的数据。我的数据如下所示。作为 lokijs 的新手,我一直在努力寻找将 item_part_option_groupsarray 从 part 中取出的方法。

我的代码

        partDb = new loki('part.json');
        partData =  partDb.addCollection('part');
        $.get(urlHelper.createUrl('item/parts', 'part', config.partId + '.json'), function(data){
           partData.insert(data);
            var data = partData.find({'part':'item_part_option_groups'});
            console.log(data);
        });

数据

   {
        "part": {
            "item_part_id": 10,
            "name": "Sleeve",
            "has_validation": 0,
            "description": "",
            "is_disabled": "1",
            "created": "2015-07-22T23:55:09+0000",
            "updated": null,
            "item_part_option_groups": [{
                "item_part_option_group_id": 10,
                "order_index": 0,
                "description": "",
                "item_part_id": 10,
                "created": "2015-07-22T23:55:39+0000",
                "updated": null,
                "item_part_options": [{
                    "item_part_option_id": 8,
                    "name": "Sleeve Type",
                    "is_conform_value": 0,
                    "has_validation": 1,
                    "item_part_option_type_id": 3,
                    "created": "2015-07-22T23:57:24+0000",
                    "updated": null,
                    "item_part_option_values": [{
                        "value": "Short Sleeve",
                        "order_index": 0,
                        "item_part_option_id": 8,
                        "item_part_option_value_id": 7,
                        "item_part_option_includes": [

                        ]
                    }, {
                        "value": "Long Sleeve",
                        "order_index": 0,
                        "item_part_option_id": 8,
                        "item_part_option_value_id": 8,
                        "item_part_option_includes": [

                        ]
                    }, ]
                }]
            }]
        }

    }

【问题讨论】:

    标签: javascript lokijs nosql


    【解决方案1】:

    如果我理解正确,您的生活过于复杂。 LokiJS 会为您的对象添加一些属性(例如 id $lokimeta 对象),但基本上它会返回对这个稍作修改的原始对象的引用(除非您在构造集合时使用 clone 选项)。

    这意味着 - 要记录 item_part_option_groups - 你只需要做:

    console.log(data.item_part_option_groups)

    您在find 中编写的查询将在partData 集合中查找part 属性等于item_part_option_groups 的对象。显然这不是你想要的。一旦对象在集合中 - 这发生在这里:

    partData.insert(data)

    记录是一个普通的js对象,所以如果你把它改成:

    var record = partData.insert(data)

    您只需参考record['item_part_option_groups'] 即可获取您想要的属性。 然而,所有这一切都与 LokiJS 无关:在我看来,您似乎在尝试获取“部分”对象,而这只能通过 map-reduce 或其他更复杂的转换来完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 2021-05-29
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多