前端开发人员如何搭建数据库

问题:我怎么才能收到你们公众号平台的推送文章呢?

最近有人问我,前端开发人员要存储用户数据,最简单的方法是什么。现在仅关于这部分,我来说明下怎么做。

搭建数据库

首先,要实际拥有一个数据库。可以去mlab网站找一个免费的。注册好后,在MongoDB部署(Deployments)栏里点击创建新数据库(create new)。创建出来的这个沙盒数据库是不用钱的,所以就用这个。

创建数据库后,要建一个帐户,这样就能验证自己的身份。点击数据库的名字,然后点用户(users),再点添加数据库用户(add database user)。把选用的用户名和密码写下来,之后要用。

在数据库页面顶端,应该可以看到MongoDB的地址。这是数据库的页面地址,就像一个网页地址一样。按惯例,MongoDB地址格式如下:

比如,我的数据库是:

搭建服务器

服务器后台我们要用Node平台。想跳过搭建过程的话,可以克隆我在Glitch上的项目,点击这里

看一下我写的启动文件:

先导入库,这个库用来处理发送到服务器的请求。

跨域请求是从一个域内的网站发送到另一个域内的服务器去的请求,要用来允许之种请求。这一句自动解析请求,转成JSON。

更准确地说,“打开页面”的意思就是用方法把一个请求发送到服务器。不同的Http方法其实只是不同类型的请求发送到服务器而已。我们只用下面几种方法:

方法用来从服务器获取资源。比如,打开Facebook页面时要加载必需的HTML,CSS和JavaScript资源。

方法用来在服务器上创建资源。比如,在Facebook上发贴,贴子里写的信息就是通过请求发送到Facebook服务器上去的。

方法用来在服务器上更新资源。比如,编辑一个贴子时,编辑的内容就通过请求发送到Facebook服务器上去。

函数、函数跟函数原理完全相同。当然,这两个函数处理的不是GET方法,而是POST和PUT方法,非常合理。

路径

服务器开发时,需要做一些测试。运行HTTP请求可以用这个网站REST test test,很方便。或者也可以用Insomnia程序。

要查看这个Glitch网站程序的地址,点击显示(show)按钮。

目前为止,我们都只用了路径。但我们要的是把不同用户的信息存储起来,所以需要为每个用户设置一个不同的路径。 比如:和路径。

那么就产生了一个问题:不可能把所有的路径一个个都编写出来,这种方法扩展性太差。我们需要的是路径参数(route parameters),这样只要写一个路径:即可。

这里面的冒号告诉Express库要捕捉任何开始字符为,并且接下来只由数字字母组成的路径。

举些例子:

要捕捉

要捕捉

不捕捉

然后,的值可以在变量里取得。

现在,所有带用户名的查询请求,服务器都能够以用户名回应了。

为数据库加入数据

我们知道用户是谁了,现在要把用户信息存储起来。

查询数据库,我们会用库。可以用下面两种方法之一安装:

如果用的是Glitch,也可以去文件,点击添加软件包(Add package)按钮。

让我们加载这个库,然后把MongoDB地址保存在一个变量里:

这个地址属于敏感信息,因为只要有了它就能访问数据库了。最好把这个地址放在一个文件里,这样别人就看不见了。

Glitch会自动从文件中把这个变量加载到变量中去。

连接数据库是一种异步操作,所以我们要把服务器搭建步骤包裹在一个回调函数里,像这样:

数据库以集合方式组织起来,集合中又包含了文档,文档基本就是JSON文件。所以让我们连接到用户这个集合上去,第一次访问时,这个集合会自己创建。

首先,我们要处理方法的路径,用这个方法来把一个新用户的数据加进去。然后,我们要用方法的路径来更新。

集合的插入方法可以给集合加入一个新文档。在我们的例子里,每个用户都有一个独立的文档。

参数利用展开操作符将请求主体内容中的数据与从URL获取的用户数据合并。

结果就是文档保存在了集合里。

第二个参数是一个回调函数,只是通知用户操作的结果。

从数据库中获取数据

既然服务器上已经有了些数据,那么我们就想要读取数据。我们用方法来读取。

这次,第一个参数是一个过滤器,告诉数据库只把符合用户属性的文档发回来。

返回到用户的文档是一个列表,因为理论上可能会不只有一个文档拥有那个用户的属性。要不要保证只返回一个,取决于我们自己。

更新数据库的数据

最后,方法可以用来更新已经存在的用户数据。

第一个参数是一个过滤器,就像方法里一样使用。

第二个参数是一个更新文档。看这里可以了解更多。在这个例子里,我们告诉数据库要把用户传进来的数据与已有的数据合并。

不过要小心,因为嵌套参数将被替换,而不是合并。

再见

要把这个文章当作数据库和后台编程指南的话还远不完整,不过其内容应该足以让大家可以开始搭建数据库,为个人项目提供一些助力。

在将来的文章里,我可能会写些关于身份验证的东西。在那之前,请不要用这个数据库存储敏感数据。

在这里,大家可以对这个项目进行小修小补。

来源:http://www.zcfy.cc/article/how-to-set-up-a-database-if-you-re-a-front-end-developer-4574.html

本文来自企鹅号 - web前端开发媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

Python 实战(1):在网页上显示信息

上次简单介绍了 web.py。今天先来粗略解释下那个 hello world 页面的代码: import web 导入 web.py 模块。 urls = ( ...

36870
来自专栏前端正义联盟

gitflow 开发流程学习(第二部分)

17260
来自专栏极客猴

pustil - 获取系统信息库

运维工程师经常使用 Python 编写脚本程序来做监控系统运行的状态。如果自己手动使用 Python 的标准库执行系统命令来获取信息,会显得非常麻烦。既要兼容不...

17010
来自专栏前端杂货铺

node模块加载层级优化

模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载。但是随着应用...

38680
来自专栏大闲人柴毛毛

Linux文件系统——全方位掌握

文件系统的特性 磁盘分区完毕后需要进行格式化,操作系统才能使用这个分区。 不同操作系统能够使用的文件系统是不同的,例如:Windows98以前使用FAT/F...

40690
来自专栏企鹅号快讯

使用postman快速建立MOCK使用篇

首先介绍一下Mock,借用一下百度百科解释:mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法, 其...

1.1K50
来自专栏游戏杂谈

坑爹的firefox

在公司,有同事向我反映,他用FF登录不了网站,我用FF看了一下,遇到这个诡异的问题:

14020
来自专栏Golang语言社区

如何优化服务器的性能

一、通常服务器的性能会卡在三个地方: cpu 网络IO 磁盘IO 二、在优化性能的时候,首先要判断性能的瓶颈在上述的哪个地方。然后对症下药,按照下面的方法来优化...

55460
来自专栏安恒网络空间安全讲武堂

Python编写渗透工具学习笔记一 | 0x01 目录扫描程序

0x01web目录扫描程序 脚本利用演示 直接输入python DirScan.py会打印出使用说明信息 ? 然后扫描一下 ? 可以看到扫描出了我的服务器的这些...

49770
来自专栏我就是马云飞

JJEvent 一个可靠的Android端数据埋点SDK

注:代码已经经过线上项目验证, 横向Google统计对比,统计数据无丢失,性能稳定.

46740

扫码关注云+社区

领取腾讯云代金券