模型定义
本页内容已移至 模型基础。
唯一的例外是关于 sequelize.import
的指南,该指南已弃用,并已从文档中删除。但是,如果您确实需要它,它已保留在此处。
已弃用:sequelize.import
注意:您不应该使用
sequelize.import
。请仅使用import
、import()
或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'));