# 関連するファイル

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

# 利用側Example

TBD

# キャッシュについて

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


# デバッグ

Logger 設定

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


# (Obsoleted) Crowi 由来旧仕様

<div class="alert alert-warning">v3.5.x 以降で廃止済み</div>

- `server/models/config.js` が Mongoose のスキーマ定義ファイル
- Crowi 時代からの初期値を `getDefaultCrowiConfigs` で設定
- GROWI をクリーンインストールした場合の初期値を `getArrayForInstalling` で取得可能

## 互換性について

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

## 利用Example

```javascript
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

## 冗長化対応について

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

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


---

## Page Navigation

- Canonical URL: https://dev.growi.org/資料/内部仕様/ConfigManager
- Permalink: https://dev.growi.org/5cc9975f30890b003fe90935
- Parent: [内部仕様](/5cc1c93a973c65003eeca8c9.md)
- Children: 1 total
  - [マルチApp対応](/5f0ee2c18c252f0048289de4.md)
- Total descendants: 1
- Siblings: 48 total
  - [AWS・メーラー周りの改善](/5d02003202145d003e1babf6.md)
  - [Audit Log Bulk Export](/68b96f7fcde220ddd8dad822.md)
  - [ElasticSearchのインデックスリビルド](/5e3ff13564387500480619a1.md)
  - [Elasticsearchから取得できるPagesに関するデータ](/614aad9c0043a10051e15701.md)
  - [EmojiPicker](/6333fb298e520dbb752dc0cd.md)
  - [EventEmitterの利用](/61391728d5f8360051fd4942.md)
  - [G2G Transfer](/6346a2e0e4791185c5e88285.md)
  - [GROWI Bot](/62a71cdfb1519362cc276234.md)
  - [HackMD連携](/5d27efd443f7f50048a78e0a.md)
  - [Handsontable統合メモ](/5cc99eac30890b003fe9093b.md)
  - [InAppNotificationにニュースを配信する](/69ab8eb7659066cd59ddb618.md)
  - [LDAPグループ同期](/646d5f73d184d74b40517c3e.md)
  - [Packagesのエラーハンドリングアーキテクチャ](/60e6727cf04bf00049b9d514.md)
  - [Page Bulk Export](/655834752aa37f82842a2034.md)
  - [PageOperation](/62010f2f16bc406c1b5e291b.md)
  - [SAML RoleとGrowiの権限の連携](/5d25e82feeb1f9003ee9b64c.md)
  - [SMTP設定に関する仕様](/5f4ef239cff9700048251c9a.md)
  - [SWR Utilities](/63735c96c29dff4657eb78ca.md)
  - [Sidebar](/5edacd0e3512890048ddc19f.md)
  - [Slack Command Handling](/60ee432f4a58890049d183cd.md)
  - [WebpackAssetsのHTMLへの注入](/5e3ee633ccdb6f0048e8c124.md)
  - [apiv3仕様](/5cf494d4aa8c91003eb0b481.md)
  - [audit-log](/62a1639c028badd4ac23f533.md)
  - [growi-database-plugin](/634784794b3568aa883bfca6.md)
  - [skipSSR](/64bf8e68a1e72e1b846d02fd.md)
  - [socket.io room 機能を使った通知設計](/6137540af2060f00510d56bb.md)
  - [v5.0.0～v7.0.15 でのRevisionデータマイグレーションバグ](/69301054963f68dfcf2b7111.md)
  - [お知らせ機能](/650d5e741647c0285cbb8a33.md)
  - [アンケート機能](/6385911e1632aa30f4dae6a4.md)
  - [インストールプロセス](/6009091dd3b38b00486b4ba5.md)
  - [インラインコメント機能](/650154e4a3498dcb94e91b36.md)
  - [ショートカットキー](/5cc1cb12973c65003eeca8cc.md)
  - [スケルトン表示ガイドライン](/62d7ca7fb18c4bec89d81a12.md)
  - [タグに関する仕様](/6171077c700078147672e3e0.md)
  - [ビルトインエディタでの同時多人数編集](/6524a63e46f2d6a2691e430a.md)
  - [ファイルアップロードのシーケンス図](/5fd8424f2271ae00481ed2e8.md)
  - [ファイルアップロード設定](/5f55a6af28951e0048d61398.md)
  - [プレゼンテーション](/63ea366fdc96eb0ef7657f53.md)
  - [ページ&ユーザーグループv5](/61b2cdd6aa330ce7d8152a4e.md)
  - [ページの子孫数](/62ac00a1c395c23b7a8c86dc.md)
  - [ページの移動・リネーム](/62149d019311629d4ecd91cf.md)
  - [ページ同時編集時のコンフリクト解消に関する仕様](/615d4a77c0ac5081f05d9d57.md)
  - [ログイン時の挙動](/63eee058c9d7133b414ba205.md)
  - [ワークフロー機能](/64e6b3d5e28cb1aa7ee4197f.md)
  - [検索v5](/61975a974027a1fa01947059.md)
  - [検索結果ページのコメント表示](/621caadad9a9f09266ad21c3.md)
  - [権限修正が可能なページのアラート](/626a263645af0b779a282145.md)
  - [空ページ](/62b2f5b3f442e6078d890a8b.md)
- Last updated: 2021-04-01T08:42:40.620Z by itizawa
- Full page listing (all children regardless of count): https://dev.growi.org/_api/v3/page-listing/children?id=5cc9975f30890b003fe90935
