代码之家  ›  专栏  ›  技术社区  ›  RidgeA

如何不选择架构中未定义的字段?

  •  0
  • RidgeA  · 技术社区  · 6 年前

    例如: 数据库中的文档:

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

    User :

    {
      "name" : String
    }
    

    架构 Employee :

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

    然而,在选择用户时( User.findById() )在结果中,我可以看到文档中的所有字段,甚至没有在模式中定义。 我根本不想在一个精简的模型中公开一些字段,所以 select: false 因为这样的田地不是我要找的。。。

    是否可以用这种方式定义模式?

    或者我错了 select:false

    我在用猫鼬 5.0.14 但如果有帮助的话,更新到最新版本就不是问题了。

    我看到了问题 How to select a single field in MongoDB? ,但我希望ODM为我做这件事。

    2 回复  |  直到 6 年前
        1
  •  0
  •   UtkarshPramodGupta    6 年前

    试试这个。:)

    var fields = Object.keys(yourSchema.paths).join(' ');
    
    //and when execute a query
    User.find({}).select(fields).exec(callback);
    
        2
  •  0
  •   Kaushik Makwana Prit Hirpara    6 年前

    在架构中尝试此操作

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