如何使用Knex查找或创建?

问题描述 投票:1回答:1

在简单的用户注册方面,如何以最佳性能进行查找或创建用户名?猜测我需要使用原始查询,但我还不是那么精通sql。

或者至少有一些拒绝,如果用户名已经存在。

javascript mysql node.js knex.js
1个回答
2
投票

使用mysql你可能需要3个查询,因为它不支持很常见的表表达式(也许一些真正新的mysql实际上支持它们),也不返回插入的数据:

获取用户,如果没有找到插入,再次获得用户(Mysql fetch the row just inserted)。

就像是:

  knex.transaction(trx => {
    trx('users').where('username', name).then(res => {
      if (res.length === 0) {
        return trx('users').insert({ username: name }).then(() => {
          return trx('users').where('username', name);
        });
      } else {
        return res;
      }
    });
  }).then(res => console.log(`User is: ${res[0]}`));
© www.soinside.com 2019 - 2024. All rights reserved.