objective.js如何在内部查询中使用外部值?

ne5o7dgx  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(397)

我正在处理一个更复杂的sql查询,它必须在objective.js中。以下是迄今为止的代码

const tagEntry = await Tag_overview.query()
    .where('playable') //the playable column is a boolean
    .whereExists(
        InnerTableName.query().findById([<normal variable>, tag.id]) //<= tag.id is the id of the row in the outer query
            )
    )
    .orderBy(raw('random()'))// this randomly orders the selection
    .limit(1)

“tag.id”应该是当前正在检查的top/outer查询中的行的值。在sql中,我用一个简单的行来解决它,比如(是一个传递到查询中的javascript变量,可以表示为硬编码值,它和tagid是一个复合键)

and EXISTS (SELECT tagid, othercolumn FROM kunstmakler_preselection WHERE tag.id = tagid AND <normal variable>  = othercolumn)

但我完全不知道如何在objective.js中做到这一点。是的,它需要一个内部查询,但是如何在其中传递这个tag.id?我完全迷路了,api参考和食谱都没有任何帮助(在这里可以找到:https://vincit.github.io/objection.js/recipes/ )
这里需要连接吗?值得吗[tagoverview表相当小,而“innertablename”相当大]。我觉得那不是解决问题的办法ü莱恩说,这是一个如此顺利的一行

tpxzln5u

tpxzln5u1#

首先确保在模型中正确声明了复合键 InnerTableName https://vincit.github.io/objection.js/recipes/composite-keys.html
那么你应该能够做到:

.whereExists(
  InnerTableName.query().findById([theJsVariable, ref("Tag_overview.id")])
)

相关问题