簡體   English   中英

如何不選擇架構中未定義的字段?

[英]How to not select fields that not defined in a schema?

我想對兩個模式使用一個集合,例如:DB中的文檔:

{
  "name":"John",
  "position":"CEO"
}

模式User

{
  "name" : String
}

架構Employee

{
  "name" : String,
  "position" : String
}

不過,在結果中選擇一個用戶( User.findById() )時,我可以看到文檔中的所有字段,即使未在架構中定義。 我根本不想透露簡化模型中的某些字段,所以請select: false此類字段的select: false不是我要查找的...另外,我想防止保存未在列表中列出的任何字段模式。

是否可以通過這種方式定義模式?

還是我錯了,而select:false正是我要找的東西? :-)

我正在使用Mongoose 5.0.14但如果有幫助的話,更新到最新版本也不是問題。

我看到了問題: 如何在MongoDB中選擇單個字段? ,但我希望ODM為我做這件事。

嘗試這個。 :)

var fields = Object.keys(yourSchema.paths).join(' ');

//and when execute a query
User.find({}).select(fields).exec(callback);

在您的模式中嘗試

 MySchema.pre('find', function() {
    this.select(fileds);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM