前端小白,正在学习使用 Node.js 做登陆和注册,下面 demo 遇到不明白的地方,希望前辈们能指点:
1、数据是怎么进入 var users={}的呢? 2、这种写法是什么意思 users[GET.user]?为什么可以这样写?
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢。。。。。。。
const http=require('http');
const fs=require('fs');
const querystring=require('querystring');
const urlLib=require('url');
var users={};
var server=http.createServer(function (req, res){
var str=''; req.on('data', function (data){ str+=data; });
req.on('end', function (){ var obj=urlLib.parse(req.url, true);
const url=obj.pathname;
const GET=obj.query;
const POST=querystring.parse(str);
if(url=='/user'){ //接口
switch(GET.act){
case 'reg':
//1.检查用户名是否已经有了
if(users[GET.user]){
console.log(users)
console.log(users[GET.user])
res.write('{"ok": false, "msg": "此用户已存在"}');
}else{
//2.插入 users
users[GET.user]=GET.pass;
res.write('{"ok": true, "msg": "注册成功"}');
}
break;
case 'login':
//1.检查用户是否存在
if(users[GET.user]==null){
res.write('{"ok": false, "msg": "此用户不存在"}');
//2.检查用户密码
}else if(users[GET.user]!=GET.pass){
res.write('{"ok": false, "msg": "用户名或密码有误"}');
}else{
res.write('{"ok": true, "msg": "登录成功"}');
}
break;
default:
res.write('{"ok": false, "msg": "未知的 act"}');
}
res.end();
}else{ //文件
//读取文件
var file_name='./file'+url;
fs.readFile(file_name, function (err, data){
if(err){
res.write('404');
}else{
res.write(data);
}
res.end();
});
}
}); });
server.listen(6036);
1
echolwn 2018-03-20 23:07:27 +08:00
你这是用的原生的 node ?上下连贯吗?你有没有省略一些代码呀?
|
2
OrangeXO OP @echolwn 谢谢哦!使用 node 的文件全部都在这里了,没有放上来的是 ajax 部分和点击部分,会影响判断吗?
|
3
lwbjing 2018-03-20 23:49:10 +08:00 1
对象的[] 相当于数组的下标,只不过对象的下标标识得是个字符串
``` var obj = {}; // obj['num'] = 123; // obj.num = 123; // 这两个写法是一样的 ``` ==== 还可以这样 ``` var obj = {}, key = 'num'; // obj[key] = 123; // 同上 ``` 或者这样 ``` var obj = {}, key = 'n'; // obj[key + 'um'] = 123; // 同上 ``` 上述的 obj = { num: 123 } |
4
lwbjing 2018-03-20 23:49:42 +08:00
这回复的 md 有毒...
|
5
lijsh 2018-03-20 23:51:27 +08:00
没看出什么太难的地方,建议你把代码再格式化一下,方便大家帮你看。
|
6
haozxuan001 2018-03-21 10:25:41 +08:00 1
第一个问题,数据通过这条语句判断( if(users[GET.user])),如果 users 对象中不存在这个数据则进入 else 分支进行 users 数据填充;
第二个问题,这段代码有歧义,本身 GET。POST 等大写字母表示的是请求方式,会误导初学者,你大可以换成 temp 等字段,至于为什么可以这么写,js 最基础的语法,如何向对象中创建属性: var s = {}; s.name = 'v2ex'; 或在你不知道对象 key 的时候 var s = {}; var s1 = 'name'; s[s1] = 'v2ex'; 效果同理 |
8
OrangeXO OP @haozxuan001 谢谢前辈🙏
|