Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在平均堆栈中更新MongoDB集合时添加引用的正确模式_Angularjs_Mongodb_Mongoose_Mean Stack - Fatal编程技术网

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

Angularjs 在平均堆栈中更新MongoDB集合时添加引用的正确模式,angularjs,mongodb,mongoose,mean-stack,Angularjs,Mongodb,Mongoose,Mean Stack,我正在学习均值堆栈的过程中,我使用它作为起点,并使用它为新对象生成脚手架 我试图找出除了服务器代码之外,如何在客户端代码中实现正确的模式 假设我有一个会议集合,每个会议都包含一个参与者对象数组(通过引用,而不是嵌入) 因此,我的javascript对象可能如下所示: meeting: { _id: 123456, location: "Room 222", startDatetime: ...., endDatetime: ...., participants: [

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

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

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

因此,我的javascript对象可能如下所示:

meeting: {
  _id: 123456,
  location: "Room 222",
  startDatetime: ....,
  endDatetime: ....,
  participants: [
    { _id: 33333 },
    { _id: 44444 }
  ]
}
如果我想添加一个参与者(并且假设我有该新参与者的id),我可以通过多种方式实现这一点:

  • 在angular控制器中,处理对参与者数组的添加,并将新id“推”到数组上。然后调用典型的REST更新api(在平均堆栈中是服务/ng资源)来处理更新。然后在服务器(mongoose)上,通过获取数组中添加的条目并调用适当的函数来添加参与者,就可以处理这个问题
  • 有一个单独的REST函数来处理添加参与者,并实现类似于#1的功能
  • 另一种保持事物简单和干净的方式

  • 推荐的实现方法是什么(从MEAN体系结构、RESTful体系结构或mongoose/MongoDB的角度推荐)?

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

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