【问题标题】:Bookshelf relation detect if fetched书架关系检测是否获取
【发布时间】:2017-05-31 06:52:32
【问题描述】:

如何判断 Bookshelf hasMany 关系是完全没有加载还是只是空的?

根据 Bookshelfjs 文档:

相关方法返回加载在模型上的关系散列上的指定关系,或者调用关联的关系方法并将其添加到关系散列中(如果存在且尚未加载)。 Model#related

如果将{ withRelated: ['relation'] } 赋予fetch,则加载关系,如果将debug: true 设置为Knex,则可以看到输出,related('relation') 包含模型(如果存在)。

但是,如果没有相关模型,related('relation') 的返回值似乎与根本不提供withRelated 选项时的返回值相同,即。它不能用于确定数据之前是否已加载。多次调用related('relation').fetch() 会产生同样多的 SQL 查询。

我是在做一些根本错误的事情,还是我真的只需要为关系建立自己的缓存?我有需要过滤的关系,并且希望模型实例对过滤后的数据有很好的获取器,而不需要在每次调用时从数据库中重新获取关系。

【问题讨论】:

    标签: node.js bookshelf.js


    【解决方案1】:

    官方没有办法,见GitHub issue


    但如果你愿意,你可以用官方不支持的方式来检查:

    modelInstance.relations[relationName]
    // e.g.
    user.relations.organization // undefined if not fetched yet
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多