跳至主要内容
版本:v6 - 稳定版

模型定义

本页内容已移至 模型基础

唯一的例外是关于 sequelize.import 的指南,该指南已弃用,并已从文档中删除。但是,如果您确实需要它,它已保留在此处。


已弃用:sequelize.import

注意:您不应该使用 sequelize.import。请仅使用 importimport()require 代替。

此文档保留是为了以防您确实需要维护使用它的旧代码。

sequelize.import 只能加载 CommonJS 文件,并且无法加载 ecmascript 模块。如果您需要加载 ecmascript 模块,请使用原生 import

您可以使用 sequelize.import 方法将模型定义存储在一个文件中。返回的对象与导入文件中定义的函数完全相同。导入被缓存,就像 require 一样,因此如果您多次导入文件,您不会遇到麻烦。

// in your server file - e.g. app.js
const Project = sequelize.import(__dirname + '/path/to/models/project');

// The model definition is done in /path/to/models/project.js
module.exports = (sequelize, DataTypes) => {
return sequelize.define('project', {
name: DataTypes.STRING,
description: DataTypes.TEXT,
});
};

import 方法还可以接受回调作为参数。

sequelize.import('project', (sequelize, DataTypes) => {
return sequelize.define('project', {
name: DataTypes.STRING,
description: DataTypes.TEXT,
});
});

此额外功能很有用,例如,即使 /path/to/models/project 似乎是正确的,也会抛出 Error: Cannot find module 错误。一些框架(如 Meteor)会重载 require,并且可能会引发类似以下错误

Error: Cannot find module '/home/you/meteorApp/.meteor/local/build/programs/server/app/path/to/models/project.js'

可以通过传入 Meteor 版本的 require 来解决此问题

// If this fails...
const AuthorModel = db.import('./path/to/models/project');

// Try this instead!
const AuthorModel = db.import('project', require('./path/to/models/project'));