2016-10-05 1 views
0

Так что я пытаюсь скрыть объект паролей от показа. Вот мой код, я использую 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", LastName: «4 ", firstName:" 4 " } – spaceDog

+0

Где? Используя сводку? Я даже не думаю, что это важно. потому что если вы говорите о скрытии пароля, когда вы отвечаете на запрос на отправку, вы отправляете весь документ, который вы только что сохранили. Ты ничего не фильтруешь. –

ответ

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