一尘不染

猫鼬:模式与模型?

node.js

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

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

(猫鼬和express.js):

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

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

阅读 321

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

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

2020-07-07