您如何 return 从 knex typescript 操作而不是结果进行查询?
How do you return a query from knex typescript operations instead of results?
我正在使用 knex 在我的 sql 数据库上执行操作。有没有办法让我有点懒惰地执行查询?
我的代码看起来像这样
const results = await knex({dbconfig})('table1')
.select('col1').where('...')
我想做一些打字稿操作并检查一些条件以执行进一步的操作。
如果我尝试通过简单地编写 results.where('...')
来执行它们,它不会说 TypeError: results.where is not a function
.
我现在正在做的是:
if (condition1){
const results = await knex(..).(some operations)
}
else{
const results = await knex(..).(some operations + some other operarations)
}
有更好的方法吗?
回答我自己的问题。
我最终删除了 await 并在返回时使用 var nd 放置它,所以现在
var results = knex(...).someOperations(..)
if(condition1)
results=results.someOtherOperations(..)
else if(condition2)
results = results.someOtherOps2(..)
return await results
正如我想您已经发现的那样,这里的技巧是使用 Knex returns 的对象。但是,您不必每次都重新分配它,只需调用它的方法即可。所以:
async function getCustomers(options) {
const customers = knex('customers').where({ someCondition });
if (options.region) {
customers.where({ region: options.region });
}
return customers;
}
请注意,return await
在 async
函数中是多余的:无论如何,您都必须在调用代码中 await
,所以您实际上只是在返回一个承诺。
我正在使用 knex 在我的 sql 数据库上执行操作。有没有办法让我有点懒惰地执行查询? 我的代码看起来像这样
const results = await knex({dbconfig})('table1')
.select('col1').where('...')
我想做一些打字稿操作并检查一些条件以执行进一步的操作。
如果我尝试通过简单地编写 results.where('...')
来执行它们,它不会说 TypeError: results.where is not a function
.
我现在正在做的是:
if (condition1){
const results = await knex(..).(some operations)
}
else{
const results = await knex(..).(some operations + some other operarations)
}
有更好的方法吗?
回答我自己的问题。 我最终删除了 await 并在返回时使用 var nd 放置它,所以现在
var results = knex(...).someOperations(..)
if(condition1)
results=results.someOtherOperations(..)
else if(condition2)
results = results.someOtherOps2(..)
return await results
正如我想您已经发现的那样,这里的技巧是使用 Knex returns 的对象。但是,您不必每次都重新分配它,只需调用它的方法即可。所以:
async function getCustomers(options) {
const customers = knex('customers').where({ someCondition });
if (options.region) {
customers.where({ region: options.region });
}
return customers;
}
请注意,return await
在 async
函数中是多余的:无论如何,您都必须在调用代码中 await
,所以您实际上只是在返回一个承诺。