首页 > 数据库 >js直接操作数据库会怎么样

js直接操作数据库会怎么样

时间:2023-03-20 13:47:17浏览次数:400  
标签:数据库 程序 js 怎么样 开发 公网 前端

 

 

 

 这几天刷脉脉的时候看到一个话题初看觉得可笑,再看陷入沉思,最后还是决定花点时间想清楚,写下来。

 
确实没见人这么干过,为什么呢?

技术限制

被技术限制了?据我所知目前没有面向js的数据库驱动,但反观现在的技术大潮,写一个面向js的数据库驱动应该也不是什么难事。
安全限制被安全性限制了?js在网站中的分量不言而喻,数据展现、交互、检验、酷炫的效果等等,前端的大半壁江山非它莫属,但它的隐私性却捉襟见肘,F12以后便可窥全貌,当然这不算缺点,毕竟它直接和用户交流,而且运行在用户浏览器中,在好奇宝宝面前如皇帝的新装一般。

 

 

 

 

扩展\稳定性

假设已经有了js的数据库驱动而且安全性已经解决,是不是就可以了?非也,想想当初为什么要前后端分离,不就是为了分而治之降低复杂度、耦合性,提高稳定性,让各自的职责更清晰,难道要重走历史的老路?另一方面来讲前端是最不稳定的,需要时刻追随业务的角度,今天是pc端网页,明天是手机端h5,后天又是公众号、小程序等等,每种类型的前端都要把操作数据库的逻辑copy一遍,重复度太高,维护绝对是一种噩梦,基础的相对稳定的内容就应该下沉,而不是各自为政,回忆下TCP/IP四层结构,是不是越往下的越稳定,应用层花活很多,但越往下的层就越稳重。 

 

 

 

任何事情脱离了场景都不能轻易说对错,恰好我最近手头有一个案例可以拿出来讨论一下。

场景出发

前几天朋友找我咨询一件事,他希望做一个演示的小程序,就两个页面,列表和详情,列表会有一个简单的搜索,问我都需要准备哪些资源,我虽然对于小程序不是很了解,但是根据公司里小程序的运行情况我大概跟他说需要以下几点:1.前端开发小程序页面;2.后端提供一个服务为前端提供接口,需要买一台服务器来运行后端服务和数据库;3.需要买一个公网域名,后端服务的接口需要公网能访问到;
朋友的反应是太复杂了,买机器、装数据库、公网域名,这一套没有点运维知识的人不好玩转,问我能不能简化,我说这就是最基本的了,他接着说网上介绍小程序有个云数据库你知道不,我看前端也可以直接操作数据库,你帮我看看是否可行,我准备找个前端就把这全套做了。
跟他交流完我觉得小程序这个云数据库有点意思,准备去官网探探虚实,新事物总能让人兴奋,一起来看下官网的介绍。

微信云开发

微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务。

开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。

开发者无需搭建服务器,可免鉴权直接使用平台提供的 API 进行业务开发。

云开发优势

 

 

 

/ 1. 获取数据库引用
const db = wx.cloud.database()
// 2. 构造查询语句
// collection 方法获取一个集合的引用
// where 方法传入一个对象,数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件(比如大于、小于、in 等),具体见文档查看支持列表
// get 方法会触发网络请求,往数据库取数据
db.collection('books').where({
publishInfo: {
country: 'United States'
}
}).get({
success: function(res) {
// 输出 [{ "title": "The Catcher in the Rye", ... }]
console.log(res)
}
})

 

总结

简单总结下步骤:

1.开通云开发服务;

2.控制台创建集合、维护数据;

3.前端使用sdk直接读取云数据库中数据;

4.前端展示数据;

相对于传统开发模式省去了维护数据库,购买公网域名等事项,极大的提高了开发速度,降低了运维难度。

 

很显然前端直接操作数据库的技术限制被解决了,那安全问题呢?F12、抓包等手段在小程序面前已然是败下阵来,毕竟它的底座是微信,不信你抓包看看?

 

回到我们开头提到的扩展\稳定性,对于简单场景来讲无伤大雅,真有扩展需求时再重构也不晚,毕竟简单,对于我朋友那种演示场景来讲快速看到成品才是最重要的,需要快速试错。

 

作为技术人来讲不要太追求“技术”,要适当的学会妥协,切记不能脱离场景。

  

 

 

 

标签:数据库,程序,js,怎么样,开发,公网,前端
From: https://www.cnblogs.com/chopper-poet/p/17235975.html

相关文章

  • js根据起始日期加间隔天数计算出结束日期
    getNewDay(dateTemp,days){dateTemp=dateTemp.split("-");//转换为MM-DD-YYYY格式varnDate=newDate(dateTemp[1]+"-"+dateTemp[2]+......
  • Qt Json 处理
    chatgpt#include<QJsonDocument>#include<QJsonObject>#include<QDebug>//从JSON字符串中解析数据voidparseJson(constQString&jsonString){//将JS......
  • Solon2 自定义 slf4j 日志添加器(比如存到数据库)
    本案需要引入已适配的slf4j日志框架(solon.logging.simple或logback-solon-plugin或log4j-solon-plugin)。1、自定义添加器入门实现自定义添加器实现一个简单的日......
  • Node.js的安装
    前面讲到了vue3的一些概念性的东西,今天我们就来讲Node.js的安装吧1.关于Node.js的安装这个是官方地址​​节点.js(nodejs.org)​​打开后是这个样子 选择左边长时间维护的......
  • JavaScript解析JSON
    一个对象以“{”开始,“}”结束。每个“key”后跟一“:”,“‘key/value’对”之间运用“,”分隔。遍历JSON对象中的数据,可通过for-in循环实现。数据{"主题":{......
  • ChatGPT4高分通过数据库系统工程师(DBA)认证
    ChatGPT已经通过了美国MBA、法律和医学考试,ChatGPT又通过了数据库系统工程师考试。这次考试使用了2021年的真实试卷,上午的笔试题全部为选择题,总分75分(45分通过)。ChatGPT3.......
  • 数据库隔离级别
    RU,readuncommittedRC,readcommittedRR,repeatableread可串行化,serializable脏读,读未提交的数据不可重复读,对于相同的一个数据,在一个事务内两次读取的值不一致,在该事......
  • ChatGPT4高分通过数据库系统工程师(DBA)认证
    ChatGPT已经通过了美国MBA、法律和医学考试,ChatGPT又通过了数据库系统工程师考试。这次考试使用了2021年的真实试卷,上午的笔试题全部为选择题,总分75分(45分通过)。ChatGP......
  • Django+VUE-1(数据库连接)
    1.创建apppythonmanage.pystartappxxx在settings.py的INSTALLED_APP注册2.创建pythonpackge(apps为例)右击MarkDirectoryas->SourcesRoot3.settings.pyimport......
  • SpringMVC返回JSON对象遇到的错误
    SPringMVC返回JSON对象遇到报错:org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logExceptionResolved[org.springframework.http.converter......