我有最基本的猫鼬模式。像这样的东西:

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);
});


返回的数据:

node.js -  Mongoose 将返回的数据限制为模型-LMLPHP

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

我在这里缺少什么吗?或者我只是在寻找错误的工具来实现自己想要的目标。
我发现this似乎可以满足我的需求,但我不想覆盖Mongoose模式只是为了在获取数据时强制执行它。

最佳答案

似乎没有内置查询功能,但您可以轻松实现自己的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 } })

关于node.js - Mongoose 将返回的数据限制为模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59956982/

10-11 01:17
查看更多