2016-10-05 7 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の場合は、投影フィールドを使用できます。なぜあなたはnullを持っているのかわかりません。この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 
    }) 
    } 
関連する問題