在 Sequelize 中,默认使用自增长主键作为主键,但在某些情况下,我们可能希望使用自定义主键,例如使用 UUID 作为主键。本文将介绍在 Sequelize 中如何使用自定义主键。
准备工作
在开始之前,请确认你已经安装了 Sequelize,如果没有,请先安装。
npm install --save sequelize
另外,我们将使用 PostgreSQL 数据库作为例子,如果你使用其他数据库,请确保 Sequelize 已经支持该数据库。
创建模型
我们先来创建一个模型,并指定一个自定义主键:
-- -------------------- ---- ------- ----- - ---------- ------ --------- - - --------------------- ----- --------- - --- -------------------------------------------------------------- ----- ---- ------- ----- -- ---------- - --- - ----- --------------- ----------- ----- ------------- ----------------- -- ----- ----------------- ---- ------------------ -- - ---------- ---------- ------ -- --
在上面的代码中,我们定义了一个名为 User
的模型,其中主键 id
的类型为 UUID,并使用 Sequelize.UUIDV4
作为默认值。另外,我们还定义了两个普通字段 name
和 age
。
同步数据库
接下来,我们需要将模型同步到数据库中:
async function syncDatabase() { await sequelize.authenticate(); await sequelize.sync(); console.log('All models were synchronized successfully.'); } syncDatabase();
上面的代码中,我们调用了 Sequelize 的 sync
方法,该方法会自动将模型同步到数据库中。在本例中,我们仅同步一次,但在实际开发中,可能需要更具体的控制。
创建实例
现在我们可以创建一些实例并存储到数据库中:
async function createUsers() { await User.create({ name: 'John', age: 20 }); await User.create({ name: 'Alice', age: 18 }); const user = await User.create({ name: 'Bob', age: 25 }); console.log(user.toJSON()); } createUsers();
在上面的代码中,我们使用 Sequelize 的 create
方法创建了三个用户,并将它们存储到数据库中。我们还获取了其中一个用户,并使用 toJSON
方法将其转换成 JSON 格式输出。
需要注意的是,在本例中,我们没有指定任何 UUID 作为主键,但 Sequelize 会自动为我们生成一个 UUID。
查询实例
接下来,我们可以使用 Sequelize 的查询功能进行查询:
async function queryUsers() { const users = await User.findAll(); console.log(users.map((user) => user.toJSON())); } queryUsers();
在上面的代码中,我们使用了 Sequelize 的 findAll
方法查询了数据库中的所有用户,并将它们转换成 JSON 格式输出。
需要注意的是,在本例中,我们查询了所有用户,但在实际开发中,可能需要通过一个或多个条件进行筛选。
总结
本文介绍了在 Sequelize 中如何使用自定义主键,并提供了详细的示例代码。在实际开发中,需要根据具体情况选择合适的主键类型,并使用 Sequelize 提供的 API 进行相应操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645ddc7e968c7c53b003b1fb