Mongooseはバージョン管理のためにSchemaに '__v'プロパティを追加します。これをグローバルに無効にすることも、すべてのクエリからグローバルに非表示にすることもできますか?マングース__vプロパティ - 非表示?
答えて
versionKey
オプションをfalse
に設定することで、スキーマ定義の "__v"属性を無効にすることができます。例:
var widgetSchema = new Schema({ ... attributes ... }, { versionKey: false });
グローバルに無効にすることはできませんが、スキーマごとにしか行うことはできません。スキーマのoptions hereについて詳しく読むことができます。 Schema set methodも参考になる場合があります。
versionKey
schema optionを使用し、not recommendedある '__v' プロパティを、無効にするには:
var Schema = new Schema({...}, { versionKey: false });
select
schema type optionを使用し、時にはnot what you want tooことができ、すべてのクエリからそれを非表示にするには:
var Schema = new Schema({ __v: { type: Number, select: false}})
どうすれば_idと__vをユーザに返す前に削除できますか?私ができるマッピングはありますか?スキーマからモデルへのマッピングは、これらの2つの属性を削除し、モデルからスキーマへのマッピングは、ユーザーが編集することはできませんが、まだそれらを参照する必要があるいくつかのフィールドを削除するとしましょう。 –
toObject.transform
関数を定義して、マングースからドキュメントを取得するときには必ずtoObject
を呼び出してください。
var SomeSchema = new Schema({
<some schema spec>
} , {
toObject: {
transform: function (doc, ret, game) {
delete ret.__v;
}
}
});
また、 'user.toObject({versionKey:false})'を呼び出すこともできます。これにより '__v'バージョンのプロパティが隠されます。 – FullStackForger
'toJSON()'も必要ですか? – binki
二つの方法:model.findById(id).select('-__v')
'-'
手段のような
{versionKey: false}
照会
-
は、フィールドに除外
__v
を無効にしたくない場合は、他の回答では無効にしてはいけない理由を説明するリンクはほとんどありません。私は今__v
を__v
と_id
let mongooseHidden = require("mongoose-hidden")();
// This will add `id` in toJSON
yourSchema.set("toJSON", {
virtuals: true,
});
// This will remove `_id` and `__v`
yourSchema.plugin(mongooseHidden);
を非表示にするには、このライブラリを使用しました
は存在しますが、それはdoc.toJSON()
で返されることはありません。
希望します。
これを試すと、すべてのクエリ応答から_vが削除されます。
// transform for sending as json
function omitPrivate(doc, obj) {
delete obj.__v;
return obj;
}
// schema options
var options = {
toJSON: {
transform: omitPrivate
}
};
// schema
var Schema = new Schema({...}, options);
はい、それだけで"options = utils.options ({ ... versionKey: '__v'..."
と変更値false
から"__v"
を検索"node_modules\mongoose\lib"
内にある "schema.js" ファイルを編集し、簡単です。
これにより、すべての投稿要求が変更されます。(versionKey: '__v' => versionKey: false)
- 1. Umbracoプロパティを非表示にする
- 2. 特定のルート(api_token)で非表示のプロパティを表示
- 3. 表示/非表示を切り替えるときの表示プロパティ
- 4. 非表示のオプションを非表示IE
- 5. Jquery非表示の非表示
- 6. タブバーの非表示と非表示
- 7. シートを非表示/非表示 - VBA
- 8. Onclick Shinyの非表示/非表示
- 9. 表示プロパティを使用してアンカータグを非表示にできない
- 10. ユーザーのプロパティに応じて、表示/非表示のコントロールを制御します。
- 11. IDE Object Inspectorのプロパティを動的に表示/非表示しますか?
- 12. 親のonclickイベントで非表示divを表示/非表示
- 13. 非表示で表示/非表示どこでもクリック
- 14. Jquery表示/非表示トグル
- 15. の表示/非表示ベース
- 16. jQuery - ドロップダウン表示/非表示
- 17. リストビューを表示/非表示
- 18. Select2を非表示/表示
- 19. JavaScript/PHP [表示/非表示]
- 20. QTransform表示/非表示
- 21. の表示/非表示DIV
- 22. 表示/非表示サイトマップメニュー/リピータ
- 23. DataTemplateを非表示/表示
- 24. ブートストラップモデルの表示/非表示
- 25. コンテンツの表示/非表示
- 26. は、表示/非表示パスワード
- 27. 非表示 - 表示ボタン
- 28. スウィフトナビゲーションコントローラ - 表示を非表示
- 29. ハイチャートコンテンツの表示/非表示
- 30. 行を表示/非表示
"__v"属性を無効にしても安全ですか?私はそれを無効にすると、それは将来の問題を引き起こすでしょうか? –
クエリから返されたドキュメントからそれを隠す方法はありますか? – diosney