书架关系检测是否已获取

时间:2017-05-31 06:52:32

标签: node.js bookshelf.js

如何确定Bookshelf { withRelated: ['relation'] }关系是否尚未加载或是否为空?

根据Bookshelfjs文件:

  

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

如果将fetch提供给debug: true,则在将related('relation')设置为Knex时可以看到输出关系,如果存在,则related('relation')包含模型。< / p>

但是,如果没有相关模型,withRelated的返回值似乎与不给出related('relation').fetch()选项时的返回值相同,即。它不能用于确定数据是否先前已加载。多次调用{{Expressions}}会导致尽可能多的SQL查询。

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

1 个答案:

答案 0 :(得分:0)

没有官方方式,请参阅GitHub issue

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

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