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

时间:2019-05-25 14:52:45

标签: mongodb adonis.js

我正在将 adonis.js / lucid ^ 6.1.3 lucid-mongo ^ 3.1.5 库一起使用来管理mongodb数据库。我需要建立一个查询并筛选hasMany关系,但它引发异常无法读取未定义的属性'collectionName'

我创建了一个名为User的模型,然后提供了一个称为session的关系,该关系必须返回所有用户会话(移动或Web会话)。我使用了adonis.js透明关系中描述的方法来查询关系数据

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

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

1 个答案:

答案 0 :(得分:0)

firstOrFail是一个 static 方法,我相信这意味着您不能在查询生成器中使用它(我可能是错的)。相反,我会尝试一些类似的方法

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

首先是查询构建器上的帮助方法,在将查询构建器与透明模型一起使用时,必须调用fetch。

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