1. ホーム
  2. node.js

[解決済み] Mongoose/MongoDB のパスワードフィールドを保護し、コレクションへの入力時にクエリで返さないようにするには?

2023-01-03 03:30:28

質問

2 つのコレクション/スキーマがあるとします。ひとつはユーザー名とパスワードフィールドを持つUsers Schemaで、もうひとつはauthorフィールドにUsers Schemaへの参照を持つBlogs Schemaを持っています。Mongoose を使って次のようなことをします。

Blogs.findOne({...}).populate("user").exec()

Blogドキュメントとユーザーも入力させるつもりですが、Mongoose/MongoDBがパスワードフィールドを返すのを防ぐにはどうしたらよいでしょうか?パスワードフィールドはハッシュ化されていますが、返されることはないはずです。

単純なクエリでパスワードフィールドを省略して残りのフィールドを返すことができるのは知っていますが、populateでそれを行うにはどうしたらいいでしょうか。また、これを行うためのエレガントな方法はありますか?

また、ユーザーがログインまたはパスワードを変更したいときのように、いくつかの状況で私はパスワードフィールドを取得する必要があります。

どのように解決するのですか?

.populate('user' , '-password')

http://mongoosejs.com/docs/populate.html

JohnnyHKの回答では、Schemaオプションを使用することが、おそらくこの方法でしょう。

また、以下の点にもご注目ください。 query.exclude() は2.xブランチにしか存在しません。