📜  复合键 knex - Javascript (1)

📅  最后修改于: 2023-12-03 15:37:50.832000             🧑  作者: Mango

复合键 Knex - Javascript

简介

Knex 是一个用于 Node.js 的 SQL 查询构建器,它可以同时用于 PostgreSQL、MySQL、SQLite3、Oracle 和 MSSQL。Knex 提供了代码优雅和可读性,并且能够很好地处理数据库的复杂性。

其中,复合键是 Knex 中一个很有用的特性,可以更好地帮助处理多列组成的主键问题。

复合键简述

复合键指的是将多列作为一个表的主键使用,而不是只用一列作为主键。这种方法常常出现在需要唯一标识一个记录、但是用单一列无法实现唯一标识的情况下。

例如,建立一个记录用户购物车中商品的表格时,可能需要同时以 user_idproduct_id 作为主键。这样的设计可以避免一个用户在购物车中出现两个相同的商品。

如何在 Knex 中使用复合键?

在 Knex 中,创建复合键非常容易。只需要在创建表时,将需要作为主键的多个列名作为一个数组传入即可。

knex.schema.createTable('shopping_cart', function(table) {
  table.integer('user_id');
  table.integer('product_id');
  table.integer('quantity');
  
  table.primary(['user_id', 'product_id']);
});

这样就可以创建一个使用 user_idproduct_id 作为主键的购物车表格了。

在查询的时候,使用复合键也很简单。在查询条件中,将包含多个列名的对象传入即可。

knex.select('*')
  .from('shopping_cart')
  .where({
    user_id: 1,
    product_id: 2
  })
  .then((result) => {
    console.log(result);
  });

以上代码查询了购物车中 user_id 为 1、product_id 为 2 的商品,输出结果应该只有一条记录。

总结

复合键是 Knex 中一个很有用的特性,可以更好地帮助处理多列组成的主键问题。在创建表格时,只需要将需要作为主键的多个列名作为一个数组传入即可。在查询的时候,将包含多个列名的对象传入,即可查询符合条件的记录。

参考资料