我有最基本的猫鼬模式。像这样的东西:
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模式只是为了在获取数据时强制执行它。
最佳答案
似乎没有内置查询功能,但您可以轻松实现自己的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/