Node.js 在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)转换函数应用于子文档。不幸的是,这在填充的“子文档”中对我不起作用。外部转换函数仍然应用于这些文件,是否可以检测我是否在已填充

在mongoose中,可以对文档应用转换函数。它们也递归地应用于任何子文档

我使用的自定义变换函数如下所示:

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属性存在于填充的子文档中。

能否显示您的模式、预期结果和实际得到的结果?我在原始问题中添加了一个示例。