在keystoneJs的doc中: 在查询中填充相关数据
由于Mongoose的填充功能,您可以填充关系字段的相关数据。要在上面的示例中加载帖子时填充作者和类别文档,您可以这样做:
Post.model.findOne().populate('author categories').exec(function(err,post) {
// the author is a fully populated User document
console.log(post.author.name);
});
我的问题是我可以配置任何选项,因此这些List API可以自动填充多个关系。
感谢。
迈克,所以答案 0 :(得分:1)
我认为不是。当我将Keystone用作API(使用.populate)时,就是这样做的。
exports.getStoreWithId = function (req, res) {
Store.model
.find()
.populate('productTags productCategories')
.where('_id', req.params.id)
.exec(function (err, item) {
if (err) return res.apiError('database error', err);
res.apiResponse({
store: item,
});
});
};
答案 1 :(得分:0)
很确定这里简短的答案是否定的。如果您想填充,则需要包含.populate
。
话虽如此,keystone允许您访问mongoose模式,因此这里的答案应该有效。显然他们的mongoose.Schema
是由您的Post.add
内容完成的,所以我认为您可以忽略他们的第一个代码段,并且您应该可以为第二个代码段添加Post.schema.pre(...
的挂钩。
Post.schema.pre('save',...
挂钩肯定适用于keystone,所以我假设预先找到的钩子也可以工作,但是我还没有真正测试过这个。 (我有兴趣知道结果!)
最后,如果可行的话,您还可以查看mongoose-autopopulate包,看看是否可以通过keystone很好地使用它。