我认为你想做的事情有不同的方式。我还建议不要直接使用模型,而是使用您想要的服务(通过调用他们的
service methods
). 您还希望熟悉
API for hooks
要修改现有服务调用的结果,请修改
hook.result
在一个
after
module.exports = function () {
return function (hook) {
let productService = hook.app.service('product');
return productService.find({
paginate: false // Turn off pagination
}).then(products => {
hook.result.products = products;
return hook;
});
};
};
然后
const myHook = require('../../hooks/myhook');
app.service('products-master').hooks({
after: {
get: [ myHook() ]
}
});
products
属性获取单个项目时
products-master
服务
2) 设置
要跳过数据库调用,可以设置
before
钩请记住
之后
3) 使用自定义服务
在一个
custom service
你可以做任何你想做的事情,例如,获取你需要的所有东西,并手动将它们放在一起:
app.use('/all-products', {
find() {
return this.app.service('products-master').find(params).then(page => {
const promises = page.data.map(masterProduct => {
return this.app.service('products').find({
paginate: false,
query: {
masterProductId: masterProduct._id
}
}).then(products => {
// Add to masterProduct
masterProduct.products = products;
});
});
return Promise.all(promises).then(() => {
// Return `page` which has the modified data
return page;
});
});
},
setup(app) {
this.app = app;
}
});
custom service
并修改
servicename.class.js
.
因为我认为你只是想填充相关的实体,你也可以看看
populate common hook
5) 使用猫鼬
$populate
这个
Mongoose Feathers adapter
还支持
$populate query parameter
这让你可以引入你在猫鼬模型中定义的关系。
this FAQ
.