
最近有人问我,前端开发者保存用户数据最繁琐的方式是什么?所以我会解释如何让它成真。
设置数据库
首先,我们需要有一个数据库。可以通过流程mlab免费获得一个。注册后,在MongoDB的下表中点击New。我们将使用免费的沙盒数据。
创建数据库后,我们需要创建一个帐户,以便我们可以停止自我验证。点击数据库标题,然后点击用户,并添加数据库用户。记下您将来选择使用的用户名和代码。
在数据库页面的顶部,您可以看到一个MongoDBURI。那是我们数据库的网站。该数据库的URI对应于网页的URL。一般来说,MongoDB的URI如下:
MongoDB://<;dbuser>:<dbpassword>@<主机>:<端口>/<;dbname>
例如,我的:
MongoDB://admin:superscretpassword@ds111885.mlab.com:11885/medium
设置服务器
我们将在后端利用节点。你可以点击那里克隆我正在做的项目Glitch,省去你设置它的麻烦。
我们从server.js开始,如下所示:
//初始化项目
constexpress=require('express');//我们将用来处理请求的库
constapp=express();//实例化express
app.use(require("cors")())//允许跨域请求
app.use(require('body-parser')。json())//自动将请求数据解析到json
//基本路线
app.get("/",函数(请求,响应){
response.send("TODO")//始终以字符串"TODO"进行响应
});
//基本路线
app.post("/",函数(请求,响应){
response.send("TODO")//始终以字符串"TODO"进行响应
});
app.put("/",函数(请求,响应){
response.send("TODO")//始终以字符串"TODO"进行响应
});
//侦听请求,需要process.env.PORT是因为
//我们使用了glitch,否则你可以写80或者其他什么
varlistener=app.listen(process.env.port,function(){
console.log('您的应用程序正在侦听端口'+listener.address()。港口);
});
我们最终使用了Express——这个库用来处理来自我们服务器的请求。
我们需要使用(require(cors))来允许跨域恳求。跨域名招揽是从一个域名的网站招揽另一个域名下的服务。
App.use(require('body-parser')。JSON())就是主动为我们把请求数据解析成JSON。
然后我们背诵get的目的是通知要处置的路由,以及回调来处置请求。也就是说,只要有人在网站中打开页面,抗辩就会被通知给谁回电处置。域名是隐藏的,所以如果你的域名是http://shiny-koala.glitch.com,路由/about是http://shiny-koala.glitch.com/about.
在同一天,通过“打开页面”,我的意思是有一个通过GET接收服务的请求。HTTP方法只是请求服务的一个例子,我们将只使用这些方法:
GET方法用于从服务器获取资金。比如脸书打开的时候,需要卸载HTML,CSS,JavaScript。
POST方法用于在服务器上创建资本。就像在脸书上发布内容一样,在发布内容中写入的信息可以通过POST的过程收集到脸书服务器上。
PUT方法用于更新服务器上的大写。例如,当您更正已发布的内容时,您可以使用PUT请求脸书服务器接收更正后的内容。
app的东西和方法。贴吧app。PUT与app类似。但是有足够的理由使用post而不是put来代替GET。
路由
当您停止服务器开发时,您需要停止一些测试。你可以使用简单的网站休息测试测试大概失眠用法语运行HTTP恳求。
单击“显示”按钮查看Glitch使用的法语URL。
到目前为止,我们只使用了路线/。但是,如果我们认为不同的用户存储不同的信息,我们需要为不同的用户分配不同的路由。
比如:/ZaninAndreaBattle/JohnGreen
现在变脸了:
我们不能停止编码每条路线,因为这是一个可扩展的方法。我们需要的是路由参数。接下来,我们只对一个路由进行编码:/:user
冒号是表示捕捉任何开头的路径,只包含字符和数字。
以下示例显示了:
/zaninandrea能抓到
/Johnny45能抓到。
/alex/score未能捕获。
我们能够在变量request.params.user中检索用户
//基本路线
app.get("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
//基本路线
app.post("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
//基本路线
app.put("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
现在,服务器可以回显每个查询并显示查询的用户名。
后台数据库清理数据
我们知道user是谁,现在想存储一些关于他的疑点。
为了查询数据库,我们将使用mongodb库。您可以通过以下两种方式安装它:
npm安装mongodb-保存
大概如果使用Glitch,可以切换到package.json文件,点击Addpackage按钮。
我们卸载mongodb库,然后将MongoDBURI存储在一个变量中:
constMongoDB=require('MongoDB');//加载mongodb
consturi=process.env.uri;
URI是一个敏感的信息——这就是你需要满足数据库。最好把URI放在一个。env文件中的信息。env文件对其他人是不可见的。
URI=mongodb://admin:PASSWORD@ds111885.mlab.com:11885/medium
Glitch会主动从。env文件添加到process.env变量中。
数据库的邻接是同步 *** 作,所以我们需要将所有服务器设置打包在回调中,如下所示:
mongodb。MongoClient.connect(uri,function(err,db){
//基本路线
app.get("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
//基本路线
app.post("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
//基本路线
app.put("/:user",函数(请求,响应){
response.send(请求.参数.用户)
});
//侦听请求,需要process.env.PORT是因为
//我们使用了glitch,否则你可以写80或者其他什么
varlistener=app.listen(process.env.port,function(){
console.log('您的应用程序正在侦听端口'+listener.address()。港口);
});
})
数据库是根据汇流构造的,汇流包含文档(基本是JSON文件)。这样我们就可以在用户旁边见面了(我们第一次见面的时候分公司就成立了)。
mongodb。MongoClient.connect(uri,function(err,db){
constcollection=db.collection('用户')
//...
}
首先,让我们 *** 纵邮政路线。当我们第一次添加用户数据时,将使用此路线。然后我们需要使用PUT路由来更新数据。
app.post("/:user",函数(请求,响应){
//在服务器上插入新文档
collection.insertOne({...request.body,user:request.params.user},function(err,r){
如果(错误){
response.send("出现错误")
}否则{
response.send("一切都好")
}
})
});
Collection.insertOne方法将新文档添加到收集器中。在这个例子中,每个用户都有自己的文档。
{...request.body,user:request.params.user} *** 纵扩展 *** 作符合并流程请求者和用户通过流程URL提供的数据。
在这里存储正在收集的文档是 *** 作的结果。
第二个参数是回调,它只是告诉用户 *** 作结果。
从数据库中获取数据
我们在服务器上存储了一些数据,现在我们想从服务器上读取这些数据。我们使用GET方法来获取它。
app.get("/:user",函数(请求,响应){
collection.find({user:request.params.user})。toArray(function(err,docs){
如果(错误){
response.send("出现错误")
}否则{
response.send(文档)
}
})
});
此时,第一个参数是一个过滤器,用于向数据库报告,只接收用户的属性信息文档给我们。
用户信息以数组的形式保存在文档中,所以文档中实际上没有一行保存用户的属性信息。我们必须阻止这种情况发生。
它以文档数组的形式返回给用户,因此实际上可以有多个具有该用户属性的文档。我们必须确保这种情况不会发生。
更新数据库数据
首先,通过PUT方法更新现有的用户信息是非常重要的。
//基本路线
app.put("/:user",函数(请求,响应){
collection.updateone({user:request.params.user},
{$set:{...request.body,user:request.params.user}},
函数(err,r){
如果(错误){
response.send("出现错误")
}否则{
response.send("一切都好")
}
})
});
第一个参数是一个过滤器,GET方法的第一个参数也类似。
第二个参数是更新文档的请求——您可以从那里获得关于它的更多信息。在我们的示例中,我们的报告数据库将用户报告的数据与现有数据合并。
但是要小心,因为嵌套的参数将被交换而不是合并。
最初
关于数据库战争的后台编程,那只是个开始,但是足够你开始一个个人项目了。
以后可以写一些关于身份验证的文章。在此之前,请不要在里面存储一些敏感数据。
你可以修复的完美项目就在那里。你需要有自己的数据库。如果没有机会创建,请回到数据库设置部门。
如果你觉得借用那篇文章没有错,请给它点掌声,让更多人看到。打开!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)