gpt4 book ai didi

knex.js - knex.raw() 和 knex.schema.raw() 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 21:03:07 27 4
gpt4 key购买 nike

knex.raw(sql, bindings)knex.schema.raw(statement) .

似乎这两个函数具有不同的签名。

如果它们相等,我该如何使用 knex.schema.raw(statement)并通过 bindings要吗?

最佳答案

knex.raw创建可以立即执行的查询构建器实例。

knex.schema.*事情的工作方式有点不同。 Knex 模式方法创建一组查询,然后在解析模式构建器时一个一个地执行这些查询。

例如,如果您这样做 knex.schema.createTable(t => ...).raw('DROP ALL').toSQL()您将看到生成了多个查询,并且它们都将在模式构建器被触发时执行。

如果你只是 await knex.schema.raw('SELECT 1')await knex.raw('SELECT 1') ,不会有任何差异。但与 knex.schema.raw你也可以这样做:

await knex.schema.raw('SELECT 1').raw('SELECT 2');

它返回一个数组,其中找到两个查询的结果。因此,完全有可能利用该功能来一个接一个地运行多个查询,如下所示:
await knex.schema
.raw('?', [knex('table1').where('id', 1)])
.raw('?', [knex('table2').where('id', 2)]);

还有 knex.schema.raw不返回 QueryBuilder ,但它返回 SchemaBuilder可用不同的方法。

所以 knex.schema.raw不能用作正常查询的一部分,例如在 knex('table').where(knex.raw('id = 1'))

关于knex.js - knex.raw() 和 knex.schema.raw() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com