位置: 编程技术 - 正文

使用Node.js实现ORM的一种思路详解(图文)(node.js使用教程)

编辑:rootadmin

推荐整理分享使用Node.js实现ORM的一种思路详解(图文)(node.js使用教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node·js,node.js使用教程,node.js in action,node.js使用教程,使用node.js实现用IP地址查询天气情况,node.js怎么用,使用node.js实现用IP地址查询天气情况,使用node.js实现100以内的偶数,内容如对您有帮助,希望把文章链接给更多的朋友!

ORM是O和R的映射。O代表面向对象,R代表关系型数据库。二者有相似之处同时也各有特色。就是因为这种即是又非的情况,才需要做映射的。

  理想情况是,根据关系型数据库(含业务需求)的特点来设计数据库。同时根据面向对象(含业务需求)的特点来设计模型(实体类)。然后再去考虑如何做映射。但是理想很骨jian感dan,现实太丰fu满za。

  没见哪个ORM是这么做的,也没见哪位高手会这么做设计。那么实际情况是什么样子的呢?以.net的Entity Framework为例。

  DB frist,就是先设计好数据库,然后根据库里的表、主外键等自动创建实体类。然后可以通过LinQToSQL来操作。这样创建出来的实体类显然缺乏面对对象的特色。

  Code frist,就是先设计实体类,然后根据实体类和特性来自动创建表和主外键、约束等。而为了严谨,定义实体类的时候需要说明一下主外键等具有关系型特色的东东。

如下图

  现在想用node来做一套引擎。刚刚接触node,估计会有现成的orm吧,不知道他们是怎么做的,先不管他们了,先把自己的思路弄清楚再说,恩恩。

  为啥要选择node呢?以为他原生支持json。Json在前端那是主场,js原生支持json,各种操作都非常流畅舒服。但是json到了后端(C#)就麻烦了,C#原生不支持json,只能作为字符串,或者实体类序列化的形态。这就需要转来转去的,很是麻烦。

  而采用node那么后端也可以用js来编码,也就是说会原生支持json。这就舒服多了。想想,前端创建json(实体类),然后整个提交给后端,后端接到json直接进行处理(安全验证、业务处理),然后直接持久化。是不是很爽!

  采用node还有一个好处,那就是他可以在运行时定义实体类的属性,比如增加属性。这个在C#里是无法实现的。

  为啥一定要运行时可以修改实体类?因为这样做可以避免实体类数量爆炸。

  打开你的项目,数一数定义了多少的实体类?是不是项目越大实体类就越多?当需要发生变化,需要给实体类增加一个属性的时候,是不是需要各种改代码?虽然VS可以帮我们做很多工作。

  所以说还是在运行时可以随意修改实体类的好,这样可以极大地避免修改代码的问题。(因为根本就没有啥代码)

使用Node.js实现ORM的一种思路详解(图文)(node.js使用教程)

  这一篇主要是说思路,所以先简单设计一个json来表示一下。

  设计这个json的目的是,引擎可以根据json的情况来拼接成SQL,然后交给数据库处理。

  一般的ORM是以实体类为核心,要求实体类的完整,就说一个实体类要和一个完整的表做映射。比如要下架一个商品,一般的做法是先把这个商品从数据库里读取出来实例化之后,修改标记属性(字段),然后再把整个实体类持久化(保存到数据库)。

  但是SQL怎么写呢?一个update就可以了,不用读取数据的,这样效率就有点损耗。

  那么如果要把一个分类的商品都下架呢?要把这个分类里的商品都折腾出来,然后批量改属性值,在批量持久化。

  如果写SQL语句呢?还是那一句SQL,只不过是把查询条件换一下,还是不需要折腾数据。这种情况下效率的差别就很大了。

  而我的这个思路呢,并不是以面向对象为核心的,而是以关系型数据库为核心。

  就是说不会把实体类和表做整体的映射,而是会把属性和字段做映射。就是说把一个表里的部分字段拿出来,做成一个实体类,然后进行操作。比如下架商品的例子

表:商品表

字段:isxiajia = 1

条件:id=1(单商品下架) cate=2 (按照分类下架)

然后生成update语句就可以了。

  这是一个独立的“实体类”,这个类里面并不需要商品的其他属性,因为只是下架操作。另外查询条件也完全放开,不是仅仅依据ID查询,还可以按照其他字段来查询,比如分类字段。这样效率就可以得到提升。

总结

以上所述是小编给大家介绍的使用Node.js实现ORM的一种思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

详解使用PM2管理nodejs进程 pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载,PM2是完

详解基于Vue+Koa的pm2配置 目前使用的技术栈是:前端Vue、后端Koa、数据库Mongodb。然而每当起服务的时候,都要npmstart、node./server/app.js,还要同时保持这两个窗口一直是开着的,

浅谈NodeJs之数据库异常处理 本文介绍了NodeJs之数据库异常处理,分享给大家,具体如下:NodeJs版本:4.4.4数据库链接错误使用nodejs处理异常最麻烦不过,这里我抛开nodejs提供的domain

标签: node.js使用教程

本文链接地址:https://www.jiuchutong.com/biancheng/379475.html 转载请保留说明!

上一篇:nodejs中安装ghost出错的原因及解决方法(nodejs ghost)

下一篇:详解使用PM2管理nodejs进程(pm2系统的操作)

  • 代扣代缴个人所得税会计分录怎么做
  • 超标准能按小规模纳税人标准纳税吗?
  • 为什么要交税钱
  • 增值税的计税依据包括
  • 一般纳税人季报是哪几个月报税
  • 只有费用没有收入成本怎么填所得税
  • 已报关的货物可以改单价价吗
  • 员工事假扣工资怎么做账
  • 申请100万增值税发票资格
  • 小规模企业多交增值税
  • 金蝶打印凭证页码范围
  • 小规模纳税人取的专票能抵扣吗
  • 多缴所得税返还现金流
  • 一般纳税人注销公司麻烦吗
  • 业务人员出差住宿费记什么科目
  • 生产企业研发用原料抵进项可以吗?
  • 2019年印花税税率表
  • 办公室零食知乎
  • 所得税新规定
  • 代开增值税发票沒有付款怎么做账?
  • 资产减值损失如何结转本年利润
  • 对方公司只能开发票吗
  • 应收账款现金折扣计入什么科目
  • 增值使用费可取消吗?
  • 固定资产资产评估
  • 固定资产合计等于固定资产账面价值吗
  • 间接费用是什么费用
  • 公司换基本户需要多久
  • 喜加一平台
  • 企业个人借款会计分录
  • 委托代销商品发票是谁开给客户
  • 资产减值损失结转怎么算
  • 缴纳房产税需要扣除折旧吗
  • php 二叉树
  • 获取谷歌浏览器cookie
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • php fopen()
  • 残保金是应交税金吗
  • php如何解析json串内的数组
  • 哪些费用计入管理费用中
  • 加工票可以抵扣吗
  • 跨年发票可以作为税前扣除的时限
  • 公司账户收款退回怎么查
  • css入门经典
  • mongodb备份策略
  • 帝国cms建站实例教程
  • 收到保险公司退款
  • 银行转账支付中是什么状态
  • SQL Server 2005的cmd_shell组件的开启方法
  • 跨年度少计摊销怎么做账
  • 零申报步骤
  • 投资性房地产公允价值模式账务处理
  • 火车退票费如何开票
  • 融资租赁的会计处理方法举例子
  • 用友t3建账行业性质怎么选
  • 销售折让的会计分录怎么做
  • 主营业务收入的概念
  • 青苗赔偿管理办法
  • 补贴算报酬吗
  • 维护费要交税吗
  • 史上最简单的皮筋枪
  • linux配置raid5方法
  • win10怎么转移文件到其他盘
  • 电脑win7不能用怎么办
  • win8.1卸载系统自带应用工具
  • win7系统怎么设置浏览器主页
  • win10预览体验win11
  • freebsd连接wifi
  • js给表格添加一行
  • android怎么学
  • python利用while循环求1+2+3......+n的和
  • nodejs apply
  • 基于Python的图书推荐系统
  • javascript的代码写在哪里
  • js实现超精简的快捷键
  • java项目怎么变成web项目
  • 企业欠税交不起怎么办
  • 开企业资信证明怎么办?需要哪些材料?
  • 股权转让税务备案时间
  • 二手车中介公司怎么做账报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设