如何为流星集合建模以提供三种不同的反应视图

时间:2013-11-27 03:32:24

标签: mongodb meteor data-modeling

我在构建数据时遇到了一些困难,因此我可以从Meteor的反应中受益。主要是嵌套对象数组会使查询变得棘手。

我试图将这些数据投射到的三个主要观点是

  1. 服务员:显示一张桌子的订单,每人一餐(项目嵌套,基本上我在下面有)
  2. 厨房经理:按表排序的订单(只需要表格,备注和项目)
  3. cook:项目列,按类别开始= true(仅需要项目信息)
  4. 目前我有一个像这样的订单对象的流星集合:

       Order {
          table: "1",
          waiter: "neil",
          note: "note from kitchen",
          meals: [
             { 
               seat: "1",
               items: [ {n: "potato", category: "fryer", started: false }, 
                        {n: "water", category: "drink" } 
               ]
              },
              { 
               seat: "2",
               items: [ {n: "water", category: "drink" } ]
              },
          ]
       }
    

    有没有办法在嵌套数组中查询并应用一些投影,还是需要查看完全不同的数据模型?

1 个答案:

答案 0 :(得分:0)

假设您正在为一家餐馆构建此应用程序,那么在任何给定时间都不应该有很多活动订单 - 大概您没有数千张桌子。即使您希望在订购后将订单保留在数据库中,也可以添加一个字段active来分隔当前的订单。

然后您的查询很简单:activeOrders = Orders.find({active: true}).fetch()fetch返回一个数组,你可以为每个视图循环几次,使用嵌套的if和for循环来挖掘子对象。另请参见下划线的_.pluck。您不需要使用一些复杂的Mongo查询来完成所有操作,实际上,如果您查询一次并且需要多次处理结果,您的应用程序将运行得更快。