我的架构如下:
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 || []);
});
};
我想知道在序列化Company对象时是否有某种方法可以包含getProducts()方法的结果,如:
CompanySchema.methods.toJSON = function() {
var obj = this.toObject();
obj.products = this.getProducts();
return obj;
};
提前谢谢。
答案 0 :(得分:1)
当然,您可以将其包含在内,而不是同步替代toJSON
。
原因是你不能在同步方法中使用异步方法(如Mongoose的find
),如toJSON
。
所以你需要让它异步:
CompanySchema.methods.toJSONAsync = function(callback) {
var obj = this.toObject();
this.getProducts(function(products) {
obj.products = products;
});
callback(obj);
};