【发布时间】: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