当前位置: 首页 > 面试题库 >

猫鼬:模式与模型?

朱炳
2023-03-14
问题内容

在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose /
mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别?

例如,此行的postgres / sql ORM等价于什么?

(猫鼬和express.js):

var userSchema = schema.define('local', {
    username:       String,
    password:       String,
});

module.exports = mongoose.model('User', userSchema);

问题答案:

在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望的属性和值以及约束和索引的一种方式。模型定义了用于与数据库进行交互(读取,插入,更新等)的编程接口。因此,架构会回答“此集合中的数据将是什么样?”
模型提供的功能类似于“是否有与此记录匹配的记录?” 或“将新文档添加到集合”。

在直接的RDBMS中,模式是由DDL语句(创建表,更改表等)实现的,而没有直接的模型概念,只有可以执行高度灵活的查询(选择语句)的SQL语句以及基本的插入,更新,删除操作。

另一种认为它的方式是SQL的本质,它允许您通过仅选择特定字段以及将相关表中的记录连接在一起来为每个查询定义“模型”。

在诸如Ruby on Rails的其他ORM系统中,通过ActiveRecord机制定义模式,并且模型是Model子类添加的用于定义其他业务逻辑的额外方法。



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

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

  • 问题内容: 我对在我的主模式中使用子文档和更深层的优缺点感到好奇: 要么 我目前在各处使用子文档,但主要是想知道性能或查询我可能遇到的问题。 问题答案: 根据文档,它是完全一样的。但是,使用Schema也会添加一个字段(只要您没有禁用该字段),并且大概会使用更多资源来跟踪子文档。 备用声明语法 v3中的新增功能 如果不需要访问子文档架构实例,则还可以通过简单地传递对象文字来声明子文档[…]

  • 问题内容: 我正在学习平均堆栈,当我尝试使用启动服务器时 我有一个例外说: 这是我在/models/Posts.js中的代码 如我所见,应该为模型“ Post”注册架构,但是什么原因可能导致引发异常? 提前致谢。 编辑: 这是异常错误 这是带有猫鼬初始化的app.js代码: 前行: 问题答案: 模型导出不是问题。我遇到过同样的问题。 真正的问题是需要模型声明 低于路线依赖关系。只需将mongoDB

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

  • 问题内容: 我想为特定模型中的Mongoose 方法创建一个存根,以便我创建的模型的任何实例都将调用该存根,而不是普通的Mongoose 方法。我的理解是,执行此操作的唯一方法是像这样对整个模型进行存根: 不幸的是,这行代码使我的测试抛出以下错误: 有人知道这里出了什么问题吗? 问题答案: 有两种方法可以完成此操作。首先是 如果您使用log mongoose.Model控制台,则会看到该模型可用的