在MEAN堆栈中更新MongoDB集合时添加引用的正确模式



我正在学习MEAN堆栈的过程中,我使用meanjs.org作为起点,并使用它为新对象生成脚手架。

我正试图找出如何在客户端Angular代码中实现正确的模式,除了服务器代码。

假设我有一个会议集合,每个会议都包含一个参与者对象数组(通过引用,而不是嵌入)。

因此我的javascript对象可能看起来像这样:

meeting: {
  _id: 123456,
  location: "Room 222",
  startDatetime: ....,
  endDatetime: ....,
  participants: [
    { _id: 33333 },
    { _id: 44444 }
  ]
}

如果我想添加一个参与者(假设我有这个新参与者的id),我可以通过各种方式实现:

  1. 在angular控制器中,处理参与者数组的添加,并将新id"推"到数组中。然后调用典型的REST更新api(在平均堆栈中一个服务/ng-resource)来处理更新。然后在服务器上(猫鼬)能够通过在数组中添加条目并调用适当的函数来添加参与者来处理这个问题。
  2. 有一个单独的REST函数来处理添加参与者和实现类似#1。
  3. 另一种让事情变得简单和干净的方法。

推荐的方法是什么(从MEAN架构或从RESTful架构或从mongoose/MongoDB的角度推荐)来实现这一点?

我不认为这个问题只有一个正确答案。假设您添加参与者的频率比编辑会议的其他数据(如位置和开始时间)的频率要高,那么我将添加一个单独的节点端点,该节点端点仅为给定的会议id添加参与者。然后我将使用$addToSet将它们添加到Mongo, $each用于多个参与者。

在angular端,我将创建一个angular服务,它调用节点服务器的$resource,只传递新的参与者和会议id。我的angular控制器会调用angular服务来保存这个新参与者。

相关内容

  • 没有找到相关文章

最新更新