Loopback のドキュメントInitializing the applicationでは、次の 2 つのことが述べられています。
初め :
Loopback.boot() は、json 定義ファイルまたは指定されたオプションに基づいてデータ ソースとモデルをロードし、 models/およびboot/ディレクトリからすべてのjsファイルをロードします。
それで :
「app.boot() と app.model(name, config) を複数のファイルで組み合わせて使用しないでください。競合状態のためにモデルが未定義になる可能性があるためです。 app.boot() を使用するときにこれを回避するには、すべてのモデルを確認してください。モデル定義の一部として渡されます。」
矛盾しているように見えませんか?
json
定義するモデルがたくさんありますが、それらを単一の巨大なファイルで定義したくないため、js
モデルごとに 1 つのファイルを上記のmodels/
ディレクトリに配置して、起動時にロードする必要があります。
今のところ、私がしたことは、次のmodels/ExampleModel.js
ようにモデルを定義することです:
var properties = {
fieldOne: { type: String, required: true },
otherField: { type: Number }
};
var options = {
relations: {
collections: {
type: "belongsTo",
model: "user"
}
}
};
var Model = require('loopback').Model;
module.exports = Model.extend('ExampleModel', properties, options);
問題はboot()
、モデルは読み込まれますが、アプリやデータソースには接続されません。REST API には公開されません。
models.json
アプリでモデルを有効にするために、少し追加してみました:
"examplemodel": {
"options": {
"base": "ExampleModel"
},
"dataSource": "db",
"public": true
}
機能しません。ループバックは例外をスローしClass not found
ます。
app.model()
の代わりに使用することも考えましたが、必要なモデルファイルModel.extend()
にアクセスする方法がわかりません。app
js
質問: どのようにディレクトリでモデルを定義しmodels/
、それらをアプリケーション、データソース、および REST API にアタッチしながら、すべてのboot()
メカニズムに依存するのですか?