2017-12-31 406 views
3

私は次のことについてどう思っていますか。 JSONオブジェクトからのデータをデータベースに書きたいと思います。 SQL論理とビジネス論理を分離したいと思います。Nodejs - 別のファイルのSQLクエリ?

私は、ファイルjsに多くのクエリが含まれている場合、t'hi戦略のパフォーマンスは良くありません。

あなたの意見では、どのアプローチがベストプラクティスですか?あなたは少しの例を提供できますか?

答えて

2

DBコードをビジネスコードから、そしてAPIコードがあればそれを分離することは、常に良い方法だと思います。他の層をからかっ

  • テスト(単体テストと)別に、すべての層、:

    これらの異なる層を作成し、あなたは別の利点を得ます。これにより、コードを変更する際に非常に高速にエラーを検出できます。

  • ビジネスコードに影響を与えずにDBコネクタやデータベースを簡単に変更できます(MongoDBのMySQLなど)
  • ビジネスコードを変更せずにAPIを変更したり、新しいコードを追加することができます(REST API by/and GraphQL)

このレイヤーのプロジェクトを表示するには、最近共同作業のニュースレターを作成できる簡単なプロジェクトを公開しました。 dbフォルダ、ドメインフォルダ、apiフォルダを持つバックエンド部分を確認することができます。それらは私が話していた3層である:

Colaborative newsletter

は、それが(すなわち、それをテストしてご覧ください)あなたは

1

あなたのパフォーマンスの問題は間違いなく「レースあなたの馬のシナリオですお役に立てば幸いです。あなたがこれをやろうとしている場合しかし、一般的に、私は単純にそうようにすべてのあなたの名前のクエリでオブジェクトをエクスポートしたい:

module.exports = { 
    getAllUsers: "SELECT username, email, displayName FROM users;", 
    /* other queries */ 
} 

あなたの呼び出し元のコードは、その後、ちょうどそのファイルを必要とし、それが必要なものを得ることができます。

const queries = require('./db/queries'); 
queries.getAllUsers // <-- this is now that string 

必要なキャッシュはファイルが1回だけ読み込まれることを保証し、JSのキーベースのルックアップは非常に高速です(数千または2つのエントリがあっても)。

関連する問題