summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorsyuilo⭐️ <Syuilotan@yahoo.co.jp>2017-03-03 09:48:06 +0900
committersyuilo⭐️ <Syuilotan@yahoo.co.jp>2017-03-03 09:48:06 +0900
commit1e1800fd666fce3f06712c005bd63503672cb346 (patch)
tree8f8257e1f71c3f307428d79a0cc8f3a46c41e10f /src/api
parentwip (diff)
downloadsharkey-1e1800fd666fce3f06712c005bd63503672cb346.tar.gz
sharkey-1e1800fd666fce3f06712c005bd63503672cb346.tar.bz2
sharkey-1e1800fd666fce3f06712c005bd63503672cb346.zip
Update it.ts
Diffstat (limited to 'src/api')
-rw-r--r--src/api/it.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/api/it.ts b/src/api/it.ts
index 14f6063b24..21cc872a2f 100644
--- a/src/api/it.ts
+++ b/src/api/it.ts
@@ -26,6 +26,30 @@
* const [val, err] = it(x).expect.string().required().qed();
*/
+/**
+ * null と undefined の扱い
+ *
+ * 「値がnullまたはundefined」な状態を「値が空である」と表現しています。
+ * 値が空である場合、バリデータやその他の処理メソッドは呼ばれません。
+ *
+ * 内部的にはnullとundefinedを次のように区別しています:
+ * null ... 値が「無い」と明示されている
+ * undefined ... 値を指定していない
+ *
+ * 例えばアカウントのプロフィールを更新するAPIに次のデータを含むリクエストが来たとします:
+ * { name: 'Alice' }
+ * アカウントには本来、他にも birthday といったフィールドがありますが、
+ * このリクエストではそれに触れず、ただ単に name フィールドを更新することを要求しています。
+ * ここで、このリクエストにおける birthday フィールドは undefined なわけですが、
+ * それはnull(=birthdayを未設定にしたい)とは違うものです。
+ * undefined も null も区別しないとしたら、触れていないフィールドまでリセットされることになってしまいます。
+ * ですので、undefined と null は区別しています。
+ *
+ * 値が空であってほしくない場合は .require() を、
+ * 値を必ず指定しなければならない場合(値を「無し」に指定することは許可)は .notUndefined() を、
+ * 値の指定をしなくてもいいけど、する場合は「無し」は許可しない場合は .notNull() を使えます。
+ */
+
import * as mongo from 'mongodb';
import hasDuplicates from '../common/has-duplicates';