繁体   English   中英

通过objectId从Parse.com集合中检索特定对象的列表

[英]Retrieving list of specific objects from Parse.com collection by objectId

我正在使用AngularJS构建一个送餐应用程序,并使用Parse.com作为我的BaaS。

用户构建订单后,他们将为订单付款,然后将订单保存到Parse.com。

由于Parse.com上数组列的最大数组大小为128KB,因此我使顺序的表示尽可能简单。 我有一个用于items的数组列。 要识别中的每个元素items阵列,我只保留了objectIdquantity

我的另一个关注点是考虑到带宽是按计量的,因此要最小化Parse.com查询。

- for each Order
    - for each Order Item
        - for each Menu Item
            - if Order Item ID == Menu Item ID, copy Menu Item data.

我很难相信没有比这更简单的方法了。 但是我见过的大多数文档都没有谈到用objectIds检索集合的子集。

我相信这是文档的相关页面:

https://parse.com/docs/js/api/classes/Parse.Query.html

没有人知道什么是解决此问题的最佳方法,而又不分解为多个Parse.com查询?

编辑:如果您需要查看代码,请确保。 有用。 我只是从算法的角度知道,这是完全无效的。

我认为您可能正在忽略一种更好的结构化数据的方法。

首先,为澄清一个误导性陈述,解析中任何类对象的最大大小为128KB,而不是数组的最大大小。 除了解析文件,这就是一切。 此外,一个128KB的阵列将是巨大的,并且根据说明,它远远超出了您的存储需求。

就数据结构而言,请考虑创建一个名为OrderItem的类。 在此类中,您有一个指向MenuItem的指针和数量的编号。 然后在您的Order类中,创建一个指向OrderItems的指针数组。

这些类可能是这样的:

  • 订购
    • 默认元数据-objectId,createdAt,updatedAt等
    • 用户:指向用户的指针
    • itemArray:指向OrderItem的指针数组
    • 您想要的其他任何数据
  • OrderItem
    • 默认元数据
    • menuItem:指向MenuItem的指针
    • 数量:
  • 菜单项
    • 默认元数据
    • 食物资讯,餐厅资讯等

您应尽可能频繁地使用指针,以避免数据库中的冗余,并保持设计尽可能一致。 我不确定在示例代码中复制菜单项数据的目的是什么,所以我将举一个不同的示例。

使用此设计,您可以使用以下查询所有用户订单,包括与订单相关的数据:

var query = new Parse.Query("Order");
query.equalTo("user", request.user);

// Include the pointer data (dot notation used for pointer to pointer)
query.include("itemArray.menuItem");

query.find({ 
    success: function(results) {
        console.log(results);
        // Do something with results
    },
    error: function() {
        response.error("query failed");
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM