2017-02-02 3 views
0

私はこのオブジェクトをmongooseから取得します。これはユーザーです。ハッシュされたパスワードフィールドを削除したいのですが、削除できないようです。Javascriptオブジェクトから値を削除

は、次のことをしようとしました:

apiRoutes.get('/user/:id', function(req, res, next) { 
    User.findById(req.params.id, function(err, post) { 
    if (err) return next(err); 
    delete post['password']; 
    res.json(post); 
    }); 
}); 

私は/それがパスワードを出力オブジェクトをCONSOLE.LOGデバッグするときにパスワードフィールドが、そこには間違いなくあります。

EDIT:

User.findById(req.params.id, '-password', function(err, post) { /* ... */ }); 

しかし、削除が動作しない理由はまだ説明していません:
はマングースの呼び出しにオプションを渡すことによってそれを解決?

+0

はちょうどここに推測するが、それは代わりに 'ポスト[「パスワード」]の' post.password' 'でなければなりません? –

+2

'post.hasOwnProperty( 'password')'は何を返しますか?パスワードプロパティを持つ祖先オブジェクトである可能性があります... – Strille

+0

@B_CooperAそれは問題ではない、両方とも試みました – RandomPerson

答えて

0

mongooseが返すオブジェクトは、実際のjavascriptオブジェクトではないようです。

私はそれに基本的な機能を使用するためにオブジェクトに変換する必要がありました:

apiRoutes.get('/user/:id', function (req, res, next) { 
User.findById(req.params.id, function (err, post) { 
    if (err) return next(err); 
    post.toObject(); 
    delete post.password; 
    res.json(post); 
}); 
関連する問題