parsingnode.js中的JSON对象
{"__v":0,"_id":{"$oid":"55f13d34258687e0bb9e4385"},"admin":true,"email":"emaple1@gmail.com","last_login":"11:25:24 AM","name_surname":"user1","password":"qwerty123"} {"__v":0,"_id":{"$oid":"55ef49dd5d610eab18719deb"},"admin":true,"email":"emaple2@gmail.com","last_login":"12:25:24 AM","name_surname":"user2","password":"qwerty123"} {"__v":0,"_id":{"$oid":"55f0173bb3322bf560724fd1"},"admin":true,"email":"emaple3@gmail.com","last_login":"10:25:24 AM","name_surname":"user3","password":"qwerty123"}
您好,我在nodeJS文件中工作,那里有一个JSON对象的集合,我想通过它进行search。 对于这个列表中的每个用户,我需要比较字段“last_login”。 我是新的nodeJS有人可以帮忙吗? 谢谢!
这是我曾经试过的:
User.find({}, {last_login: }, function(err, docs) { if (err) { return res.json({ success: false, message: 'Failed to display last logins.' }); } docs.forEach(function(doc, index) { res.json({success: true, message: 'time of last login', last_login: doc.last_login}); }) //res.json(users); }); });
last_login是用户对象中的一个字段,基本上我需要遍历数据库中的所有用户,并只提取last_login并显示在响应中。我不知道在curly里面find()大括号这是我卡住的部分
我稍微改变了函数,它返回一个JSON对象,其中包含与search查询匹配的一个用户的信息。 问题是,控制台显示结果作为一个整体的对象,虽然我只想得到一个特定的键值对,即last_login:value
function searchByUserName(name_surname) { return list.filter(function(user) { return user.name_surname === name_surname; }); } var a = searchByUserName('user1'); for (last_login in a ) { if (a.hasOwnProperty(last_login)) { console.log("last_login" + "=" + JSON.stringify(a[last_login])) } }
你能告诉我,为了得到最后一个login键在这里做了什么改变是我从console.log()得到的样本结果:
last_login={"__v":0,"_id":{"$oid":"55f13d34258687e0bb9e4385"},"admin":true,"email":"emaple1@gmail.com","last_login":"11:25:24 AM","name_surname":"user1","password":"qwerty123"}
虽然我想last_login = “last_login”: 11:25:24 AM
假设它是一个像波纹pipe的对象数组。
var users = [{"__v":0,"_id":{"$oid":"55f13d34258687e0bb9e4385"},"admin":true,"email":"emaple1@gmail.com","last_login":"11:25:24 AM","name_surname":"user1","password":"qwerty123"}, {"__v":0,"_id":{"$oid":"55ef49dd5d610eab18719deb"},"admin":true,"email":"emaple2@gmail.com","last_login":"12:25:24 AM","name_surname":"user2","password":"qwerty123"}, {"__v":0,"_id":{"$oid":"55f0173bb3322bf560724fd1"},"admin":true,"email":"emaple3@gmail.com","last_login":"10:25:24 AM","name_surname":"user3","password":"qwerty123"}];
你可以创build一个像波纹pipe的function
function searchByLastLogin(last_login) { return users.filter(function(user) { return user.last_login === last_login; }); } console.log(searchByLastLogin("12:25:24 AM")); console.log(searchByLastLogin("10:25:24 AM")); console.log(searchByLastLogin("11:25:24 AM"));
它将重last_login
将与给定参数last_login
匹配的一组users
。
更新
我从你的评论中了解到,你想要每个用户的最后login。
为此你可以做一些像波纹pipe一样的东西
var last_logins = users.map(function(user){ return user.last_login; }); console.log(last_logins); //prints [ '11:25:24 AM', '12:25:24 AM', '10:25:24 AM' ]
参考
filter | 地图
我不知道什么值放在大括号内的find()这是我卡住的部分
如果我理解正确,你只想得到用户模型的last_login
字段,这就是你正在努力?
根据文档,这应该工作,如果你只是想获得该领域:
User.find({}, {last_login:1, _id:0})