node.js - Mongoose:模式与模型?

标签 node.js mongodb postgresql mongoose database

在查看教程时,模式和模型之间通常存在界限,尤其是在处理 mongoose/mongodb 时。 这使得移植到 postgresql 有点令人困惑,因为在该系统下似乎不存在“模型”。这两种方法有什么区别?

例如,与这一行等效的 postgres/sql ORM 是什么?

( Mongoose 和 express.js):

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

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

最佳答案

在 mongoose 中,模式表示特定文档的结构,可以是完整的,也可以只是文档的一部分。这是一种表达预期属性和值以及约束和索引的方法。模型定义了用于与数据库交互(读取、插入、更新等)的编程接口(interface)。所以一个模式回答“这个集合中的数据会是什么样子?”并且模型提供了诸如“是否有与此查询匹配的记录?”之类的功能。或“向集合中添加新文档”。

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

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

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

关于node.js - Mongoose:模式与模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22950282/

相关文章:

javascript - Meteor 和 Mongo AND 标签过滤器

MongoDB 获取文档速度慢(使用索引)

sql - PostgreSQL 上的简单更新触发器返回错误

node.js - 如果定义了属性,则从 Waterline 中的模型获取结果

javascript - ReactJS 路由器正在覆盖 ExpressJS 路由器

javascript - 在 Mac OS X (El Capitan) 上安装 angular-cli 时出现无效的 @angular-cli/ast-tools 错误

mongodb - 为什么 MongoDB 不使用索引交集?

javascript - 关于expressjs中next()函数的问题

java - Hibernate 有时会在子实体中留下空的外键字段

sql - 在 Postgresql 中选择正聚合值并忽略负值