You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Knex中knex().select('id').from('users')与knex('users').select('id')有何区别?

Knex两种查询写法的差异解答

这两种Knex查询写法完全没有功能差异,最终生成并执行的SQL语句完全一致,只是调用顺序不同而已:

  • knex().select('id').from('users'):先初始化Knex查询构建器,通过select()指定要查询的字段,再用from()关联目标表
  • knex('users').select('id'):直接以目标表名作为参数初始化查询构建器,再通过select()指定要查询的字段

两种写法最终都会生成相同的SQL:

SELECT `id` FROM `users`;

针对你的登录校验代码的小提示

  1. Knex的查询是异步操作,需要返回Promise或者使用await处理结果,否则无法获取查询到的用户信息:
async function checkLogIn(email, username, password) {
  const user = await knex("users")
    .select("id")
    .where({
      email: email,
      username: username,
      password: password,
    })
    .first(); // 用first()获取单条结果,避免返回数组
  
  return user ? true : false;
}
  1. 绝对不要明文存储密码,应该在用户注册时对密码进行哈希(比如使用bcrypt),登录时用哈希值比对,避免数据库泄露导致用户密码直接暴露。

内容的提问来源于stack exchange,提问作者StackOverflAXEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:05:54