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})