如何填充keystoneJS关系

时间:2017-02-21 03:38:29

标签: keystonejs

在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可以自动填充多个关系。

感谢。

迈克,所以

2 个答案:

答案 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很好地使用它。