当前位置: 首页 > 知识库问答 >
问题:

猫鼬图式设计

颜经艺
2023-03-14

我想为用户设计一个清单。基本上,我尝试创建一个清单,其中包含一个用户id和一个包含每个项目编号的项目列表。

存在我的集合“项”的架构:

 var ItemSchema = new mongoose.Schema({
    name: String,
    image: String,
    effects : {
        attack: String,
        defense: String,
        life: String
       }
    });

我不能设计一个库存集合,在那里我可以很容易地更新每个项目的数量并添加新项目。

共有1个答案

公西宏毅
2023-03-14

也许你想要的是有一个“物品”的目录,比如你描述的帽子、手套、枪等等。

每个项目都有自己的ID,然后您必须将该项目引用到您的用户库存架构中:

var UserInventorySchema = new Schema({
        userId:{ type:Schema.Types.ObjectId,
               ref: 'User'
        },
        items:[{
        _id:{
            type:Schema.Types.ObjectId,
            ref: 'Item' // this is the name for your Item Schema 
        },
        Amount:{
            type: Number,
            default:0
        }
    }]
});

在这种情况下,对数据库的写入会更多,读取会更少。如果要进行更多的读取,我建议您坚持使用相同的模型,但只需添加名称,您就不会进行填充以返回所有“项”数据。

 类似资料:
  • 在前端,我有3个层次结构。 顶层显示一个测试摘要,包含统计信息,如%通过/失败、各种标签、运行标识等。 第二级由测试套件的各个部分组成,这些部分可以通过顶级运行id访问。其中包含测试的名称,特定的测试通过/失败。 第三级是实际测试本身,包括报告、通过/失败状态等。 我使用的是平均堆栈,我想知道使用1、2或3种不同的Mongoose模型在MongoDB中存储数据的利弊。我知道在数组中使用嵌入式文档的

  • 问题内容: 我刚开始是猫鼬。我有一个带猫鼬的创建脚本,该脚本用示例数据创建模式和数据库。 现在,我编写实际的应用程序。每次我的应用程序运行时,我是否需要创建模式对象,或者它已经以某种方式可用? 换句话说,我是否需要在每个使用猫鼬访问数据库的应用程序中运行此代码,还是仅在第一次运行此代码: 如果我有设置器/验证器/等,答案将如何变化? 问题答案: 一个定义就是让应用程序理解如何将数据从MongoDB

  • 问题内容: 如何将一个架构添加到另一个架构?这似乎无效: 我检查了网站,它显示了如何为数组声明而不是为单个声明。 谢谢 问题答案: 有几种方法可以做到这一点。最简单的就是这样: 然后,您只需确保您的应用程序正在编写该ID,并在查询中使用该ID即可根据需要提取“相关”数据。 按用户ID搜索任务很好,但按任务ID查询用户则比较麻烦: 另一种方法是利用Mongoose的填充功能来简化查询。为此,您可以执

  • 问题内容: 在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose / mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别? 例如,此行的postgres / sql ORM等价于什么? (猫鼬和express.js): 问题答案: 在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望

  • 问题内容: 尝试在Typescript中实现Mongoose模型。对Google的调查只揭示了一种混合方法(结合JS和TS)。在没有JS的情况下,如何以我比较幼稚的方式实现User类呢? 希望能够不带行李的IUserModel。 问题答案: 这是我的方法:

  • 问题内容: 我使用Mongoose.js,无法解决3级层次结构文档的问题。 有2种方法可以做到。 首先 -没有裁判。 我需要出示C记录。仅知道_id的C,如何填充/找到它? 我曾尝试使用: 但是我不知道如何从returnet得到一个对象,我只需要c对象。 其次, 如果使用裁判: 如何填充所有B,C记录以获取层次结构? 我试图使用这样的东西: 但是它将为single_c.title返回undefin