私は次のように構築されたマングースユーザースキーマを持っています:
var UserSchema = new Schema({
username: { type: String, required: true, index: { unique: true } },
password: { type: String, required: true },
salt: { type: String, required: true}
});
このユーザー オブジェクトをアプリケーションのクライアント側に送信できるようにしたいのですが、パスワードやソルト フィールドを無視したくありません。
そこで、ユーザーモデルモジュールに次のコードを追加しました
う
serSchema.methods.forClientSide = function() {
console.log('in UserSchema.methods.forClientSide');
console.log(this);
//var userForClientSide=_.omit(this,'passsword','salt');
var userForClientSide={_id:this._id, username:this.username };
console.log(userForClientSide);
return userForClientSide;
}
required
アンダースコア モジュールがあります (package.js の依存関係を介してローカルにインストールされます)。
コメントアウトされた行ではありません-ユーザーオブジェクトのパスワードとソルトフィールドを省略することを期待していましたが、何もしませんでした:(ログに記録されたオブジェクトにはプロパティの完全なセットがありました.
現在使用されているものに置き換えると、必要なvar userForClientSide={_id:this._id, username:this.username };
結果が得られますが、
1) うまくいかない理由を知りたい_.omit
。2)現在の回避策はあまり好きではありません。気に入らないプロパティを省略するのではなく、実際にいくつかのプロパティを選択するためです。新しいプロパティをスキーマに追加する場合は、ここにも追加する必要があります。
これは、node.js/express/mongodb/mongoose などを使用して何かを書く最初の試みです。そのため、この問題に対する他のより良い解決策 (おそらく mongoose の機能) を見逃している可能性が非常に高いです。このようなことをする正しい方法。
基本的に、これを行う正しい方法と、なぜ私の方法がうまくいかなかったのかを知りたいです。
ありがとう