gpt4 book ai didi

Mongoose Schema 用于分层数据,例如文件夹 > 子文件夹 > 文件

转载 作者:行者123 更新时间:2023-12-02 19:15:09 24 4
gpt4 key购买 nike

我们如何为文件系统创建分层架构

var Folder = new Schema({

'name' : String,
'isFile' : Number,
'children' : [Folder]
});

我们可以做这样的事情吗???

最佳答案

您使用的架构将子文件夹嵌入到父文件夹中。这可能会起作用,但有一些问题。

首先,每个文件夹文档的大小可能会变得相当大,具体取决于文件系统的大小,并且您可能会遇到达到大小限制的问题。

另一个问题是,直接查找不在顶层的文档变得非常困难。

更好的解决方案是将父/子关系存储为引用。

var Folder = new Schema({
name: String,
isFile: Boolean,
parent: {
type: Schema.Types.ObjectId,
ref: 'Folder'
},
children: [{
type: Schema.Types.ObjectId,
ref: 'Folder'
}]
});

ref 属性只是指示 Mongoose 应该在哪个集合/模型中查找引用的文档,因此如果您查询它,它可以找到它。在本例中,我们引用一个父级(一个文件夹)和一个子级列表(也是文件夹类型的文档)。

存储对父级的引用允许您轻松地遍历树,对子级的引用允许您从上到下生成树。

您可以使用 Mongoose 的 populate 功能从引用文献中提取详细信息。请参阅the Mongoose documentation有关人口和引用的更多信息。

<小时/>

注意我将 isFile 更改为 Boolean 字段,因为我假设您正在尝试存储是/否值?

关于Mongoose Schema 用于分层数据,例如文件夹 > 子文件夹 > 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com