2017-09-22 3 views
1

disabling globalsドキュメントは、次の選択肢を使用することを提案する場合:使用は帆JSアプリで "必要"

  • _ =( 'lodash')を必要と
  • myServiceという= sails.services.myservice
  • に、mymodel = sails.models.mymodel
  • 帆の=のreq._sails

"帆"、 "サービス"、および「モデルを必要とするすべての問題があるだろう"他のモジュールとよく似ていますか?

これを試しても動作するように見えますが、私は何か不足していると感じています。

答えて

0

サービスにはrequireを使用すると常に有効です。グローバリゼーションは便宜上のものにすぎません。

一方、require('api/models/User.js')を実行することはほぼ確実にではありません。は、Sailsがモデルクラスを構築するために使用するものなので、あなたに必要なものを与えます。したがって、グローバルが設定されていないSailsでモデルを確実に使用する唯一の方法は、sails.modelsです。

最後に、require('sails')は実行中のSailsアプリへの参照を提供しますが、そのように使用することはお勧めしません。同じプロセス(複数のSailsアプリを自動テストで実行する)で複数のSailsアプリを実行していた場合、正しいアプリが確実に返されません。コントローラではreq._sails、モデルとサービスではthis.sailsを使用するほうがはるかに優れています。


+0

詳細な回答ありがとうございます。ドキュメントは、モデルとサービスのために "this.sails"を介してセイルにアクセスすることは言及していません。コントローラーからのリファレンスを渡すべきですか?例えばコントローラのアクション内で呼び出すmyService.someMethod(req._sails) –

+0

これは完全に有効な方法ですが、 'this.sails'は間違いなく安全です。再:ドキュメンテーション、良い呼び出しは、それを検討します。 – sgress454

関連する問題