モデル定義
このページの内容は モデルの基本 に移動されました。
唯一の例外は、非推奨となりドキュメントから削除された`sequelize.import`に関するガイドです。しかし、どうしても必要な場合はここに残されています。
非推奨: `sequelize.import`
注意: `sequelize.import` は使用しないでください。代わりに
import
、import()
、またはrequire
を使用してください。このドキュメントは、どうしても古いコードを維持する必要がある場合に備えて残されています。
`sequelize.import` は CommonJS ファイルのみをロードでき、ecmascript modules
のロードはできません。ecmascript modules をロードする必要がある場合は、ネイティブの `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'));