関連するファイル

  • server/models/config.js が Mongoose のスキーマ定義ファイル
  • server/service/config-loader.js が値のロード、変換、後方互換を担う
  • server/service/config-manager.js が利用側へのAPIを提供する

利用側Example

TBD

キャッシュについて

  • Express サーバーがオンメモリでコンフィグ値のキャッシュを持っている
  • ConfigManager.updateConfigsInTheSameNamespace 内でキャッシュが更新される

デバッグ

Logger 設定

'growi:service:Config*': 'debug',

(Obsoleted) Crowi 由来旧仕様

v3.5.x 以降で廃止済み
  • server/models/config.js が Mongoose のスキーマ定義ファイル
  • Crowi 時代からの初期値を getDefaultCrowiConfigs で設定
  • GROWI をクリーンインストールした場合の初期値を getArrayForInstalling で取得可能

互換性について

  • 新旧APIは、それぞれでコンフィグ値のキャッシュを持っている
    • 古い方のAPIで設定した値の取得に関しては新しいgetConfigでも取得可能だが、
      古い方のAPIで更新かけた際に新しいAPIで値を取得しにいってもキャッシュは古いまま

利用Example

Config.updateNamespaceByArray('crowi', form, (err, config) => { Config.updateConfigCache('crowi', config); return res.json({ status: true }); });

updateConfigsInTheSameNamespace について

複数の Config をまとめて更新するためのメソッド

https://github.com/weseek/growi/blob/v4.2.13/src/server/service/config-manager.js#L195-L214 external_link

冗長化対応について

第3引数の withoutPublishingS2sMessage に false を渡すことで publishUpdateMessage を実行する。 基本的に、false で問題ない。

convertInsertValue について

更新する Config 値に 空文字を与える場合、 convertInsertValue によって null に設定される。
これは textInput で空欄にして保存した時のためである。