过滤 hasMany 关系时无法读取未定义的 属性 'collectionName'

Cannot read property 'collectionName' of undefined when filtering hasMany relationship

我正在使用 adonis.js/lucid ^6.1.3lucid-mongo ^3.1.5 库来管理 mongodb 数据库。我需要建立一个查询并过滤一个 hasMany 关系,但它抛出一个异常 Cannot read 属性 'collectionName' of undefined

我创建了一个名为 User 的模型,然后提供了一个名为 session 的关系,它必须 return 所有用户会话(移动或网络会话)。我使用了 adonis.js lucid relationship 中描述的方法来查询关系数据

return await user.sessions().where({
    'logged_in_at': { $type: 10 },
    'logged_out_at': { $type: 10 }
}).where('tries', '<', 3).firstOrFail();

预期的输出应该是会话文档(行),但这是它抛出的异常无法读取未定义的属性 'collectionName'

firstOrFail 是一个 static 方法,我认为这意味着您不能将它与查询构建器一起使用(我可能是错的)。相反,我会尝试

return await user.sessions().where({
  ...
}).andWhere('tries', '<', 3').first()

首先是查询构建器上的辅助方法并且在将查询构建器与清晰模型一起使用时必须调用 fetch。

编辑:出于某种原因,在 Adonis 文档中,它将 find 和 first/firstOrFail 标记为静态,但它们不是。 reference