我的架构如下所示:
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;
};
先感谢您。
最佳答案
当然,您可以包括它,只是不能同步地代替toJSON
。
原因是您不能在同步方法(例如find
)中使用异步方法(例如Mongoose的toJSON
)。
因此,您需要使其异步:
CompanySchema.methods.toJSONAsync = function(callback) {
var obj = this.toObject();
this.getProducts(function(products) {
obj.products = products;
});
callback(obj);
};
关于node.js - [Mongoose]使用来自异步查询的数据覆盖到JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19066368/