Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js 跟踪父对象中的子对象,还是跟踪子对象中的父对象?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 跟踪父对象中的子对象,还是跟踪子对象中的父对象?

Node.js 跟踪父对象中的子对象,还是跟踪子对象中的父对象?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,假设我正在创建一个包含节的列表 最好在父元素中保留ObjectId的数组 var listSchema = new mongoose.Schema({ sections : {type: [ObjectId], ref : "Section"} }); 或者我只是在每个项目中保留对父对象的ObjectId的引用,然后简单地查找 var sectionSchema = new mongoose.Schema({ list : {type: ObjectId, ref : "L

假设我正在创建一个包含节的列表

最好在父元素中保留
ObjectId
数组

var listSchema = new mongoose.Schema({
     sections : {type: [ObjectId], ref : "Section"}
});
或者我只是在每个项目中保留对父对象的
ObjectId
的引用,然后简单地查找

var sectionSchema = new mongoose.Schema({
     list : {type: ObjectId, ref : "List"}
});
(或两者兼有,以获得最大的灵活性?)


我一直在用第二种方法,但我觉得我可能太拘泥于关系数据库范式了。因为一旦有了多个层次的嵌套,所有的回调都会变得非常糟糕,以获取我想要的数据。而且我没有真正利用填充函数。

假设每个对象只有一个父对象,那么在子对象中保留父对象ID就容易多了

尽管如此,如果您总是试图查找对象的子对象,而不是父对象,那么在父对象中存储子对象ID数组会更容易

我不确定您使用的语言是否有地图,但您可以使用地图将父ID链接到子ID。它的工作原理是将父ID存储为键,子ID存储为值。这样,您所要做的就是查找父ID并获取其所有值,或者查找子ID并获取其父ID

这意味着ID不存储在子级或父级中,而是存储在它们都需要访问的单独数据结构中


此外,常规映射可能只允许每个键有一个值。如果是这种情况,则需要一个多重映射。互联网上可能有一些关于如何使用它以及如何进入课堂的信息。

这个基本问题在StackOverflow和其他网站上已经讨论了很多。10gen记录了各种选项的优缺点是很常见的:谢谢,我来看看。我不知道你为什么在不了解技术的情况下发表评论?