【问题标题】:how to populate keystoneJS relationship如何填充keystoneJS关系
【发布时间】:2017-02-21 03:38:28
【问题描述】:

在 keystoneJs 的文档中: 在查询中填充相关数据

借助 Mongoose 的填充功能,您可以为关系字段填充相关数据。要在从上面的示例加载帖子时填充作者和类别文档,您可以这样做:

Post.model.findOne().populate('author categories').exec(function(err,post) {
    // the author is a fully populated User document
    console.log(post.author.name);
});

我的问题是我可以配置任何选项,以便这些列表 API 可以自动填充多关系。

谢谢。

麦克苏

【问题讨论】:

    标签: keystonejs


    【解决方案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,
            });
        });
    

    };

    【讨论】:

      【解决方案2】:

      很确定这里的简短回答是否定的。如果要填充,则需要包含 .populate

      话虽如此,keystone 让您可以访问 mongoose 模式,所以这里的答案应该有效。显然他们的mongoose.Schema 是由您的Post.add 东西完成的,所以我认为您可以忽略他们的第一个sn-p,并且您应该能够将钩子添加为Post.schema.pre(... 用于第二个sn-p。

      Post.schema.pre('save',... 钩子肯定可以与 keystone 配合使用,所以我假设 pre-find 钩子也可以工作,但我还没有实际测试过。 (不过我很想知道结果!)

      最后,如果可行,您还可以查看mongoose-autopopulate 包,看看您是否可以让它与keystone 很好地配合使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 2014-10-27
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多