这可能是Mongoose中的一个错误,或者我遗漏了一些东西。正如标题所说,我有一个Schema,其中包含几个包含数组的字段:(下面的模式)
ThisSchema = var AssassinJobSchema = new Schema ({
codename: { type: String, index: { unique: true } },
_cat: [
{ type: ObjectId, ref: 'KillingBidsCategory' }
],
reqroute: {
start: {
_id: { type: ObjectId, ref: 'Location' },
name: { type: String },
loc: { type: [Number], index: '2d' }
},
end: {
_id: { type: ObjectId, ref: 'Location' },
name: { type: String },
loc: { type: [Number], index: '2d' }
}
targets: [ PersonToAssasinate ],
deadline: {
hours: { type: [Number], min: 0, max: 10800 }
}
});
我知道如何从查询中排除字段,或包含某些字段。但是,我注意到如果我排除其中一个有数组的字段,即ThisSchema.statics.find({'_id': x},'-reqroute -deadline',cb)
,我仍然会在结果中获得这些字段,只是它们现在是空白的。
这可能是我做错了吗?
解决方法1
选择要返回的字段是一种解决方案,但对于包含大量字段的文档而言,包含9个字段只是为了排除一个字段会变得很麻烦。
解决方法2
如果我想排除reqroute和截止日期,我可以从返回的对象中delete
,但这也是更多的工作,特别是对于Javascript初学者有时要掌握。
摘要
我是否在排除错误,或者它是Mongoose如何处理数组字段的错误?如果是后者,我会提交错误并解决其问题。感谢