作家
登录

在Node.js中使用MySQL&MySQL JavaScript客户端

作者: 来源: 2017-07-28 13:30:03 阅读 我要评论

转义用户输入

为了避免 SQL 注入进击,你应当老是转义来自用户的任何数据,然后再把它用于 SQL 萌芽。来演示一下为什么:

不过,如不雅我们将 userLandVariable 改为:

居然拜访了全部数据集。如不雅我们再改为如许:

这下麻烦大年夜了!

好消息是有办法处理这类问题。你只须要应用 mysql.escape 办法:

或者应用问号占位符,就像我们在文┞仿一开端提到的那个示例一样:

为什么不简单地应用 ORM?

你可能留意到了,评论中有人建议应用 ORM。在胪陈这个办法的优缺点之前,我先看看 ORM 是什么。下面是来自 Stack Overflow 的答复。

对象关系映射(Object-Relational Mapping, ORM) 是一种许可人们应用面向对象范型来萌芽和操作数据库数据的技巧。在谈到 ORM 的时刻,多半人是指实现了 ORM 技巧的某个库,所以会应用 “an ORM” 如许的短语。

是以,这种办法根本上意味着你会应用 ORM 范畴相干的说话来编写数据库逻辑,而不是我们一向在评论辩论的通俗办法。下面以 Sequelize 为例:

比较:

应用 ORM 对你是否有意义,取决于很多与你工作相干的身分,比如你在做什么以及为谁做。一方面,ORM 的情势使开辟更为高效,大年夜某种法度榜样上来说,它抽象了大年夜部分的 SQL 因而不须要团队中的每小我都去懂得若何编写高效的数据库萌芽。它也很轻易迁徙到不合的数据库软件,因为你是在抽象层次长进行开辟。

然而,大年夜另一方面来说,因为不睬解 ORM 是若何做的,所以可能会编写出一些纷乱和低效的 SQL。机能也会是一个大年夜问题,毕竟优化不经由过程 ORM 的萌芽要轻易得多。

到查询拜访取哪一种办法,决定权在你,然则如不雅正在做这个决定,请看看这个 Stack Overflow 的帖子:为什么竽暌功该应用 ORM?,以及 SitePoint 上的:你可能不知道的 3 个 JavaScript ORM。

小结

本教程中只涉及到了 MySQL 客户端的外相。我推荐你去浏览官方文档以懂得更具体的信息。当然也有其余选择,比如 node-mysql2 和 node-mysql-libmysqlclient。

你是否已经在 Node.js 顶用过这些库来连接到 MySQL?我很想听人说嗣魅这些库。请鄙人面的评论中告诉我们你的设法主意、建议以及更正看法!

运行 app.js。如不雅履行成功你可以看到 select 萌芽的输出参数和各类其它信息。经由过程 rows[2] 可获得输出参数的值。

【编辑推荐】

  1. 换个思路懂得Javascript中的this
  2. JavaScript语法树与代码转化实践
  3. 10个JavaScript可贵
  4. 大年夜指向看JavaScript中的可贵
  5. MySQL逝世锁与日记相干经验分享
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  Python Yield Generator详解

一些编程场景中,一件工作可能须要履行一部分逻辑,然后等待一段时光、或者等待某个异步的结不雅、或者等待某个状况,然后持续履行另一部分逻辑。比如微办事架构中,办事A履行了一段逻辑之>>>详细阅读


本文标题:在Node.js中使用MySQL&MySQL JavaScript客户端

地址:http://www.17bianji.com/lsqh/36458.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)