dnv*_*dnv 38 database postgresql mongoose mongodb node.js
在查看教程时,通常会在模式和模型之间进行描述,尤其是在处理mongoose/mongodb时.这使得移植到postgresql有点令人困惑,因为在该系统下似乎不存在"模型".这两种方法有什么区别?
例如,这行的postgres/sql ORM是什么?
(mongoose和express.js):
var userSchema = schema.define('local', {
username: String,
password: String,
});
module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)
Pet*_*ons 61
在mongoose中,模式表示特定文档的结构,完全或仅是文档的一部分.它是表达预期属性和值以及约束和索引的一种方式.模型定义了用于与数据库交互的编程接口(读取,插入,更新等).因此,架构会回答"此集合中的数据会是什么样的?" 并且模型提供诸如"是否有与此查询匹配的记录?"之类的功能.或"将新文档添加到集合中".
在直接的RDBMS中,模式是通过DDL语句(create table,alter table等)实现的,而没有模型的直接概念,只有可以执行高度灵活查询的SQL语句(select语句)以及基本插入,更新,删除操作.
另一种思考方式是SQL的本质允许您通过仅选择特定字段以及将相关表中的记录连接在一起来为每个查询定义"模型".
在Ruby on Rails等其他ORM系统中,模式是通过ActiveRecord机制定义的,模型是Model子类添加的额外方法,用于定义其他业务逻辑.
架构从根本上描述了文档(在 MongoDB 集合中)的数据构造。该模式定义了每一项数据的名称,以及数据的类型,是否是字符串、数字、日期、布尔值等。
\n模型是模式的编译版本。该模型的一个实例将映射到数据库中的一个文档。\n该模型负责处理文档的读取、创建、更新和删除。\nMongoose 集合中的文档是模型的单个实例。因此,如果我们要处理数据,那么将通过模型进行操作是有道理的。\n模型的单个实例(如 中的 User 实例var User = mongoose.model('User', userSchema);)直接映射到数据库中的单个文档。\n有了这个1:1关系,它是处理所有文档交互的模型——创建、读取、保存和删除。这使得该模型成为一个非常强大的工具。
摘自“Mongoose for Application Development”,作者:Simon Holmes,2013 年
\n我将模型想象为从模式创建的类(也许我错了)。
\nMongoDB 将所有内容存储在 BSON 中,这是一种二进制格式。一个简单的 Hello World BSON 文档内部可能如下所示:\n \\x16\\x00\\x00\\x00\\x02hello\\x00\\x06\\x00\\x00\\x00world\\x00\\x00。计算机可以处理所有这些繁琐的内容,但对于人类来说却很难阅读。我们想要一些我们可以轻松理解的东西,这就是开发人员创建数据库模型概念的原因。模型是数据库记录的表示,是您选择的编程语言中的一个很好的对象。在这种情况下,我们的模型将是 JavaScript 对象。模型可以充当存储数据库值的简单对象,但它们通常具有数据验证、额外方法等功能。正如您\xe2\x80\x99 将看到的,Mongoose 有很多\n这些功能。
摘自“Express in Action”,作者 Evan Hahn,2016 年
\n| 归档时间: |
|
| 查看次数: |
13285 次 |
| 最近记录: |