如何管理引用-Mongodb后端、Javascript前端

如何管理引用-Mongodb后端、Javascript前端,javascript,mongodb,Javascript,Mongodb,这是我玩的一个示例应用程序的一般问题。我在客户端上使用Mongodb实现持久性和香草javascript 我基本上是从用户输入创建一个对象,然后在一次调用中将该对象发送到服务器,我的对象中存在关系,因此我必须生成Guid作为ID,并在此基础上管理引用 { "school": { "courses": [ {"id": 1,"name": "course1"}, {"id": 2,"name": "course2"},

这是我玩的一个示例应用程序的一般问题。我在客户端上使用Mongodb实现持久性和香草javascript

我基本上是从用户输入创建一个对象,然后在一次调用中将该对象发送到服务器,我的对象中存在关系,因此我必须生成Guid作为ID,并在此基础上管理引用

{
    "school": {
        "courses": [
          {"id": 1,"name": "course1"},
          {"id": 2,"name": "course2"},
          {"id": 2,"name": "course3"}
        ],
        "students": [
          {"id": 1,"name": "student1"},
          {"id": 2,"name": "student2"},
          {"id": 3,"name": "student3"}
        ],
        "groups": [
         {"id": 1,"students": [1, 3],"course": 1},
         {"id": 2,"students": [2, 3],"course": 2}  
        ]
    }
}
这是一个简化的对象,并且使用ints作为Id而不是Guid

用户将首先添加一些课程,然后添加一些学生,然后在下一个屏幕上,他们将显示包含先前添加的课程和学生的下拉列表

用户将创建组,选择学生(多选)和课程。在这里,我将使用为课程和学生生成的ID作为参考

现在一切正常了,我创建了对象并将数据发送回服务器保存在Mongodb中


当用户删除某个课程或学生时会出现问题,而我在某个组中仍然有该学生或课程的参考资料,那么我如何才能自动更新该组。我知道我可以使用一个循环或者类似的东西,但这似乎并不正确。在原始数据中,我有非常复杂的关系,所以这种方法不太合理

通常,由于客户机不可信,因此它应该发送UUID之外的所有内容,并让服务器生成一个UUID。如果你需要这个ID回到客户端,只要让服务器用最终记录响应就行了。事实上我不能,我必须在客户端管理一切。应用程序有点离线。如果我必须以这种方式创建关系(与文档数据库),我会在文档之间交叉引用它们。因此,当
有一个
学生
数组时,
学生
也有一个
数组。将学生添加到组时,将填充此数组,以便在删除该学生时可以准确地清理引用。我很想找到一个更好的方法,但可能只是“切换到关系数据库”。通常,由于客户端不可信,它应该发送UUID之外的所有内容,并让服务器生成一个。如果你需要这个ID回到客户端,只要让服务器用最终记录响应就行了。事实上我不能,我必须在客户端管理一切。应用程序有点离线。如果我必须以这种方式创建关系(与文档数据库),我会在文档之间交叉引用它们。因此,当
有一个
学生
数组时,
学生
也有一个
数组。将学生添加到组时,将填充此数组,以便在删除该学生时可以准确地清理引用。我很想找到更好的方法,但可能只是“切换到关系数据库”。