gpt4 book ai didi

Mongoose 仅​​选择在架构中明确声明的字段

转载 作者:行者123 更新时间:2023-12-03 06:35:35 25 4
gpt4 key购买 nike

当使用 Mongoose 并查询数据库时,默认情况下会选择所有字段,我必须明确告诉 Mongoose 我不想选择哪些字段,例如,如果我不想要字段 user 我应该这样做:

var schema = new Schema(
{
insertedAt: {type: String},
tags: {type: String},
user: {type:Object, select:false},
connectedIds: {type:Array}
}

问题是,字段可能会在 API 开发人员(我)不知情的情况下添加到数据库中。

是否可以告诉 Mongoose 选择显式设置的字段?

最佳答案

有一种解决方法可以始终仅选择架构中定义的字段。您要做的就是获取具有 schema paths 属性的所有字段并将其传递给您的 select() 语句,例如:

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

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

这样,即使有人向您的对象添加新字段,它也永远不会显示。缺点是您必须为每个查询执行此操作。

关于Mongoose 仅​​选择在架构中明确声明的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com