我正在使用 Mongoosejs 连接 MongoDB。
考虑以下设计的模式示例:
var factSchema= new Schema({
facts: { type:[require('./fact')], select:false}
,roles: {type: [String], required: true, index: {unique: false}}
,c: {type: {}, default: {}} //all calculated stuff based on facts
}
其中明确指出,在正常查询“factSchema”时,不会查询实际的“事实”。只有在明确选择“事实”之后,我才能确保包含这些内容。IE:
//factModel is a model derived from factSchema
factModel.findOne({_id:input.id})
.select(["facts","roles","c"]).exec(function(err,result){//do something});
这适用于这种微不足道的情况。但是我已经将 factSchema 子类化(有关如何的信息:https ://groups.google.com/forum/?fromgroups#!searchin/mongoose-orm/INHERIT/mongoose-orm/aeqGRRnpFvg/lbfIA54hiwYJ )并且我想查询所有字段一个特定的子类,但它只在运行时知道我正在查询哪个子类。换句话说,我无法明确指定要返回的字段。
我该怎么办?
一个可能的解决方案似乎是(?)我可以通过执行subclassedSchema.paths
where subclassedSchema
is a subclass of 来访问模式的所有已定义字段factSchema
。
这行得通,但我可以相信这在未来的版本中是稳定的吗?有什么更好的、不那么骇人听闻的方法来解决这个问题吗?