对象不断显示密码我试图隐藏它

对象不断显示密码我试图隐藏它

问题描述:

所以我想隐藏密码对象显示。这是我的代码,我正在使用bcrypt来密码。我隐藏了返回对象,但我没有得到我的预期结果。我做错了什么,请帮忙。非常感谢。 谢谢。对象不断显示密码我试图隐藏它

var express = require('express') 
var router = express.Router() 
var User = require('../Models/User.js') 
var bcrypt = require('bcrypt') 


router.get('/:resource', function(req, res, next){ 
    var resource = req.params.resource 

    if (resource == 'user'){ 
    User.find(null, function(err, users){ 
     if(err) { 
     res.json({ 
      confimration: 'error', 
      message: err 
     }) 
     return 
     } 

     res.json({ 
      confimration: 'success', 
      message: users 
     }) 
     return 
    }) 
    } 
}) 

router.post('/:resource', function(req, res, next){ 
    var resource = req.params.resource 
    var data = req.body 
    var password = data.password 
    var hashed = bcrypt.hashSync(password, 10) 
    data['password'] = hashed 

    if(resource == "user") { 
    User.create(data, function(err, user){ 
     if(err){ 
     res.json({ 
      confirmation: 'fail', 
      message: err 
     }) 
     return 
     } 
     res.json({ 
     confirmation: 'success', 
     result: user 
     }) 
     return 
    }) 
    } 
}) 

    module.exports = router 



    var mongoose = require('mongoose') 

    var UserSchema = new mongoose.Schema({ 
     firstName: {type: String, lowercase: true, trim: true, default: ''}, 
     lastName: {type: String, lowercase: true, trim: true, default: ''}, 
     email: {type: String, lowercase: true, trim: true, default: ''}, 
     city: {type: String, default: ''}, 
     password: {type: String, default: ''}, 
     timestamp: {type:Date, default: Date.now} 
    }) 

    UserSchema.methods.summary = function() { 
     var summary = { 
     firstName: this.firstName, 
     lastName: this.lastName, 
     email: this.email, 
     timestamp: this.timestamp, 
     id: this._id, 
     city: this.city 
     } 
     return summary 
    } 

    module.exports = mongoose.model('UserSchema', UserSchema) 

{ 
_id: "57f460235805b52762605df2", 
__v: 0, 
timestamp: "2016-10-05T02:06:27.829Z", 
password: "$2a$10$DIHrMO8WcRmOkIVj93SSQ.LFe5vPYH6R3xrfsSuql.v2jfU2mcO.C", 
city: "new york", 
email: "4", 
lastName: "4", 
firstName: "4" 
} 
+0

你在哪里试图隐藏你的密码? – MrPiao

+0

我想返回除密码以外的所有内容。 { _id: “57f460235805b52762605df2”, __v:0, 时间戳: “2016-10-05T02:06:27.829Z”, 城市: “纽约”, 电子邮件: “4”, 名字:“4 “, 姓氏:”4“ } – spaceDog

+0

何处使用您的汇总方法?我甚至不认为这很重要。因为如果您在回复邮寄请求时正在讨论隐藏密码,请发送刚刚保存的整个文档。你没有过滤任何东西。 –

router.get您可以使用投影字段。我不知道你为什么有空。但这find搜索用户集合中的所有文档,并排除返回的每个文档的密码字段。这对router.get有帮助吗?

if (resource == 'user'){ 
    User.find({},{password: 0}, function(err, users){ 
     if(err) { 
     res.json({ 
      confimration: 'error', 
      message: err 
     }) 
     return 
     } 

     res.json({ 
      confimration: 'success', 
      message: users 
     }) 
     return 
    }) 
    }