如何使用Knex查找或创build?

就简单的用户注册而言,我怎样才能在用户名中查找或创build最佳性能? 猜测我需要使用原始查询,但我还没有如此精明的SQL。

或者,如果用户名已经存在,至less应该拒绝。

用mysql你可能需要3个查询,因为它不支持很好的通用表expression式(也许有些新的mysql实际上支持它们),也不会返回插入的数据:

获取用户,如果没有find插入,再次获取用户( Mysql获取刚插入的行 )。

就像是:

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]}`));