乐闻世界logo
搜索文章和话题

如何从sequelize实例中正确访问已定义的模型?

2 个月前提问
2 个月前修改
浏览次数20

1个答案

1

在Sequelize 中,模型是代表数据库中表的抽象,这些模型通常在单独的文件中定义并通过 Sequelize 实例进行管理。正确访问这些已定义模型的方法有很多,具体取决于你如何组织你的代码。以下是一些常见的做法:

1. 使用 Sequelize 实例的 model 方法

假设你已经有一个 Sequelize 实例和一些已定义的模型,你可以使用 Sequelize 实例的 model 方法来访问这些模型。这种方法适用于那些已经在 Sequelize 实例上注册过的模型。

javascript
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('sqlite::memory:'); // 假设你已经定义了一个模型 User class User extends Sequelize.Model {} User.init({ username: Sequelize.STRING, birthday: Sequelize.DATE }, { sequelize, modelName: 'user' }); // 访问 User 模型 const UserModel = sequelize.model('user');

2. 通过导入模型文件

如果模型是在不同的文件中定义的,你可以通过导入那些文件来直接使用模型。这种方式不依赖于 Sequelize 实例的 model 方法,而是直接导入模型类。

javascript
// user.model.js const { Sequelize, Model } = require('sequelize'); const sequelize = new Sequelize('sqlite::memory:'); class User extends Model {} User.init({ username: Sequelize.STRING, birthday: Sequelize.DATE }, { sequelize, modelName: 'user' }); module.exports = User; // 在另一个文件中使用 User 模型 const User = require('./user.model'); // 使用 User 模型 User.create({ username: 'alice', birthday: new Date(1990, 0, 1) });

3. 使用中心化模型注册器

有时候,当应用程序较大或模型较多时,你可能想要创建一个中心化的地方来注册和管理所有的模型。这可以通过创建一个模型注册器来实现,然后在需要的地方引入这个注册器。

javascript
// models/index.js const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('sqlite::memory:'); const User = require('./user.model')(sequelize); const Product = require('./product.model')(sequelize); module.exports = { User, Product }; // 在需要的地方引入模型 const { User, Product } = require('./models'); // 使用 User 模型 User.create({ username: 'bob', birthday: new Date(1985, 2, 20) });

以上是一些基本的方法来从 Sequelize 实例中正确访问已定义的模型。正确的方法取决于具体的项目结构和个人偏好。

2024年7月24日 17:04 回复

你的答案