在查看教程时,通常会在模式和模型之间进行描述,尤其是在处理mongoose / mongodb时。 这使得移植到postgresql有点令人困惑,因为在该系统下似乎不存在“模型”。这两种方法有什么不同?
例如,这行的postgres / sql ORM是什么?
(mongoose和express.js):
var userSchema = schema.define('local', {
username: String,
password: String,
});
module.exports = mongoose.model('User', userSchema);
答案 0 :(得分:56)
在mongoose中,架构表示特定文档的结构,完全或仅是文档的一部分。它是表达预期属性和值以及约束和索引的一种方式。模型定义了用于与数据库交互的编程接口(读取,插入,更新等)。因此,架构会回答“此集合中的数据会是什么样的?”并且模型提供诸如“是否有与此查询匹配的记录?”之类的功能。或“将新文档添加到集合中”。
在直接RDBMS中,模式由DDL语句(create table,alter table等)实现,而没有模型的直接概念,只有可以执行高度灵活的查询(select语句)以及基本的SQL语句插入,更新,删除操作。
考虑它的另一种方法是SQL的本质允许您通过仅选择特定字段以及将相关表中的记录连接在一起来为每个查询定义“模型”。
在Ruby on Rails等其他ORM系统中,模式是通过ActiveRecord机制定义的,模型是模型子类添加的额外方法,用于定义其他业务逻辑。
答案 1 :(得分:-1)
简而言之:
猫鼬模型是猫鼬模式的包装器。 Mongoose 模式定义了文档的结构、默认值、验证器等,而 Mongoose 模型为数据库提供了用于创建、查询、更新、删除记录等的接口。