Node.js 在mongoose转换中检测填充文档中是否存在
在mongoose中,可以对文档应用转换函数。它们也递归地应用于任何子文档 我使用的自定义变换函数如下所示:Node.js 在mongoose转换中检测填充文档中是否存在,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,在mongoose中,可以对文档应用转换函数。它们也递归地应用于任何子文档 我使用的自定义变换函数如下所示: myDoc.toObject({transform:function myTransformFn(doc,ret,opts){}) 可以使用 if('function'==typeof doc.ownerDocument)返回 在子文档中,不将父级的(myDoc)转换函数应用于子文档。不幸的是,这在填充的“子文档”中对我不起作用。外部转换函数仍然应用于这些文件,是否可以检测我是否在已填充
myDoc.toObject({transform:function myTransformFn(doc,ret,opts){})
可以使用
if('function'==typeof doc.ownerDocument)返回代码>
在子文档中,不将父级的(myDoc)
转换函数应用于子文档。不幸的是,这在填充的“子文档”中对我不起作用。外部转换函数仍然应用于这些文件,是否可以检测我是否在已填充的子文档中
编辑:模式示例
var parentSchema = new Monogoose.Schema({
exampleProp: { type: String },
child: { type: Mongoose.Schema.Types.ObjectId, ref: 'Child' }
});
var childSchema = new Mongoose.Schema({
anotherExampleProp: { type: Number }
});
var ParentModel = Mongoose.model('Parent', parentSchema);
var ChildModel = Mongoose.model('Child', childSchema);
// get a parent and populate child path
// assume both objects were created and linked correctly
ParentModel.findOne({}).populate('child').exec(function(err, parent) {
if (err) console.log(err);
var parentJsObject = parent.toObject({
transform: function(doc, ret) {
if ('function' === typeof doc.ownerDocument) return;
ret.foo = 'Hello Bar';
}
});
console.log(parentJsObject);
/* yields
{
exampleProp: 'SomeString',
child: {
anotherExampleProp: 0,
foo: 'Hello Bar'
},
foo: 'Hello Bar'
}
*/
});
我不希望foo属性存在于填充的子文档中。能否显示您的模式、预期结果和实际得到的结果?我在原始问题中添加了一个示例。