【问题标题】:Mongoose restrict returned data to modelMongoose 将返回的数据限制为模型
【发布时间】:2020-05-14 08:30:16
【问题描述】:

我拥有最基本的 Mongoose 架构。像这样的东西:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

ConfigSchema = new Schema({
  title: String
});

module.exports = mongoose.model("Config", ConfigSchema);

如果我使用这个模型从这个集合中获取数据(使用find 函数),我会得到整个对象。
呼叫:

Config.find(function(err, configs) {
  if (err) res.send(err);
  res.json(configs);
});

返回数据:

我认为 Mongoose 会根据模型验证获取的数据,只返回适合模型的数据,因此在这种情况下,只返回元素的标题。我知道我可以在 Mongoose 上使用 strict 属性来强制保存模型,但我正在寻找一种只获取建模数据的方法。

我是否在这里遗漏了什么,或者我只是在寻找我希望完成的错误工具。 我发现 this 似乎可以满足我的要求,但我并不想仅仅为了在获取数据时强制执行它而覆盖 Mongoose 模式。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    似乎没有任何内置的查询功能,但您可以轻松实现自己的pre-middleware

    ConfigSchema.pre('find', function() {
        this.select(Object.keys(ConfigSchema.tree));
    });
    

    这将在您运行 Config.find 时生成以下查询:

    configs.find({}, { projection: { title: 1, _id: 1, __v: 1, id: 1 } })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2019-08-16
      • 2016-04-19
      • 2015-01-19
      • 1970-01-01
      • 2015-04-18
      • 2014-01-09
      相关资源
      最近更新 更多