Node.js [Mongoose]使用异步查询中的数据覆盖到JSON

Node.js [Mongoose]使用异步查询中的数据覆盖到JSON,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我的模式如下所示: var CompanySchema = new Schema({ // }); CompanySchema.methods.getProducts = function(next) { var Product = require(...); Product.find({...}).exec(function(err, products) { if (err) return next(err) return next(null, pr

我的模式如下所示:

var CompanySchema = new Schema({
  //
});

CompanySchema.methods.getProducts = function(next) {
  var Product = require(...);
  Product.find({...}).exec(function(err, products) {
    if (err) 
      return next(err)
    return next(null, products || []);
  });
};
我想知道在序列化公司对象时,是否有某种方法可以包含getProducts()方法的结果,例如:

CompanySchema.methods.toJSON = function() {
  var obj = this.toObject();
  obj.products = this.getProducts();
  return obj;
};

提前谢谢。

当然,您可以将其包括在内,只是不能同步地替换
toJSON

原因是不能在同步方法(如
toJSON
)中使用异步方法(如Mongoose中的
find

因此,您需要将其设置为异步:

CompanySchema.methods.toJSONAsync = function(callback) {
  var obj = this.toObject();
  this.getProducts(function(products) {
    obj.products = products;
  });
  callback(obj);
};

不是同步的,不是。你能再解释一下你的问题吗?你到底想要实现什么?