﻿1
00:00:01,210 --> 00:00:02,660
‫Instruktur: Sejauh ini

2
00:00:02,660 --> 00:00:04,860
‫di bagian ini, kita telah berbicara

3
00:00:04,860 --> 00:00:06,940
‫tentang model Mongoose, operasi CRUD

4
00:00:06,940 --> 00:00:09,660
‫dengan Mongoose, kita melakukan banyak query, dan

5
00:00:09,660 --> 00:00:12,820
‫kita belajar tentang pipa agregasi, tapi sekarang untuk

6
00:00:12,820 --> 00:00:15,110
‫beberapa video berikutnya, mari kita kembali

7
00:00:15,110 --> 00:00:18,860
‫ke data kita model dan pelajari beberapa fitur super berguna

8
00:00:18,860 --> 00:00:22,170
‫yang ditawarkan Mongoose kepada kami untuk memodelkan data kami.

9
00:00:22,170 --> 00:00:24,090
‫Dan yang pertama akan kita

10
00:00:24,090 --> 00:00:25,773
‫bicarakan adalah properti virtual.

11
00:00:27,410 --> 00:00:29,973
‫Jadi mari kita buka model tur kita di sini.

12
00:00:31,050 --> 00:00:35,080
‫Baiklah, sekarang properti virtual pada dasarnya adalah bidang yang dapat

13
00:00:35,080 --> 00:00:37,030
‫kita definisikan pada skema

14
00:00:37,030 --> 00:00:39,150
‫kita, tetapi itu tidak akan dipertahankan.

15
00:00:39,150 --> 00:00:42,100
‫Jadi mereka tidak akan disimpan ke dalam database

16
00:00:42,100 --> 00:00:44,720
‫untuk menghemat ruang kita di sana.

17
00:00:44,720 --> 00:00:46,140
‫Dan sebagian besar

18
00:00:46,140 --> 00:00:49,260
‫waktu, tentu saja, kami ingin benar-benar menyimpan data kami

19
00:00:49,260 --> 00:00:51,700
‫ke database, tetapi properti virtual sangat masuk

20
00:00:51,700 --> 00:00:55,090
‫akal untuk bidang yang dapat diturunkan dari satu sama lain.

21
00:00:55,090 --> 00:00:58,410
‫Misalnya konversi dari mil ke kilometer, tidak masuk akal

22
00:00:58,410 --> 00:01:00,720
‫untuk menyimpan dua bidang ini

23
00:01:00,720 --> 00:01:03,260
‫dalam database jika kita dapat dengan mudah

24
00:01:03,260 --> 00:01:05,750
‫mengonversi satu ke yang lain, bukan?

25
00:01:05,750 --> 00:01:09,140
‫Oke, sekarang mari kita definisikan properti virtual yang berisi

26
00:01:09,140 --> 00:01:11,680
‫durasi tur dalam hitungan minggu.

27
00:01:11,680 --> 00:01:13,800
‫Dan pada dasarnya itu adalah

28
00:01:13,800 --> 00:01:16,460
‫bidang yang dapat dengan mudah kita ubah dari durasi

29
00:01:16,460 --> 00:01:18,970
‫yang sudah kita miliki dalam beberapa hari, bukan?

30
00:01:18,970 --> 00:01:20,523
‫Dan inilah cara kerjanya.

31
00:01:22,160 --> 00:01:25,640
‫Kami mendefinisikan properti virtual itu pada skema

32
00:01:25,640 --> 00:01:30,640
‫tur, dan kami katakan, tourSchema. virtual dan kemudian nama

33
00:01:33,430 --> 00:01:34,763
‫properti virtual.

34
00:01:36,530 --> 00:01:39,300
‫Jadi sebut saja durasi minggu, dan

35
00:01:39,300 --> 00:01:42,950
‫kemudian di sana kita perlu mendefinisikan metode get.

36
00:01:42,950 --> 00:01:45,600
‫Dan itu hanya karena properti virtual di

37
00:01:45,600 --> 00:01:47,580
‫sini pada dasarnya akan dibuat

38
00:01:47,580 --> 00:01:50,560
‫setiap kali kita mendapatkan beberapa data dari database.

39
00:01:50,560 --> 00:01:54,273
‫Jadi fungsi get ini di sini disebut getter.

40
00:01:54,273 --> 00:01:57,090
‫Sekarang di sini kita melewati sebuah fungsi,

41
00:01:57,090 --> 00:01:58,400
‫dan sebenarnya fungsi

42
00:01:58,400 --> 00:02:02,460
‫panggilan balik ini akan menjadi fungsi nyata, jadi bukan fungsi panah,

43
00:02:02,460 --> 00:02:05,672
‫dan saya akan menjelaskan kepada Anda mengapa dalam sedetik.

44
00:02:05,672 --> 00:02:08,500
‫Sekarang bagaimana kita pada dasarnya

45
00:02:08,500 --> 00:02:10,810
‫mendefinisikan properti virtual?

46
00:02:10,810 --> 00:02:13,420
‫Yah itu sangat sederhana, yang harus kami katakan

47
00:02:13,420 --> 00:02:18,280
‫adalah kami ingin mengembalikan ini, . durasi dalam hal ini,

48
00:02:18,280 --> 00:02:19,833
‫dibagi tujuh.

49
00:02:21,020 --> 00:02:24,350
‫Jadi begini cara kita menghitung durasi dalam minggu, jadi

50
00:02:24,350 --> 00:02:26,730
‫durasi dalam hari dibagi tujuh karena

51
00:02:26,730 --> 00:02:29,110
‫ada tujuh hari dalam seminggu, dan

52
00:02:29,110 --> 00:02:31,030
‫begitulah durasi dalam minggu.

53
00:02:31,030 --> 00:02:33,510
‫Misalnya, jika sebuah tur memiliki tujuh hari, maka

54
00:02:33,510 --> 00:02:35,730
‫tentu saja akan menjadi satu minggu.

55
00:02:35,730 --> 00:02:38,360
‫Sekarang saya menggunakan fungsi reguler ini

56
00:02:38,360 --> 00:02:41,250
‫di sini karena ingat, fungsi panah tidak mendapatkan

57
00:02:41,250 --> 00:02:43,060
‫kata kunci disknya sendiri.

58
00:02:43,060 --> 00:02:45,800
‫Di sini kita sebenarnya membutuhkan kata kunci

59
00:02:45,800 --> 00:02:48,470
‫disk karena kata kunci disk dalam

60
00:02:48,470 --> 00:02:51,588
‫hal ini akan menunjuk ke dokumen saat ini.

61
00:02:51,588 --> 00:02:54,640
‫Dan biasanya ketika kita ingin

62
00:02:54,640 --> 00:02:58,714
‫menggunakan ini, maka kita harus selalu menggunakan fungsi biasa.

63
00:02:58,714 --> 00:03:01,140
‫Jadi benar-benar di mana-mana di Mongoose,

64
00:03:01,140 --> 00:03:04,340
‫saya akan selalu menggunakan fungsi reguler yang

65
00:03:04,340 --> 00:03:06,061
‫biasa kita gunakan.

66
00:03:06,061 --> 00:03:11,061
‫Jadi, simpan di sini, dan hanya itu.

67
00:03:11,070 --> 00:03:13,180
‫Begitulah cara kami mendefinisikan durasi

68
00:03:13,180 --> 00:03:15,660
‫minggu, yang tidak akan disimpan dalam

69
00:03:15,660 --> 00:03:19,150
‫database, tetapi hanya akan ada segera setelah kami mendapatkan datanya.

70
00:03:19,150 --> 00:03:21,820
‫Sekarang sebenarnya itu belum akan ada di sana,

71
00:03:21,820 --> 00:03:24,610
‫karena ada satu bagian yang hilang di sini, jadi

72
00:03:24,610 --> 00:03:27,243
‫izinkan saya mulai dengan menunjukkannya kepada Anda.

73
00:03:28,760 --> 00:03:31,240
‫Jadi jika kami mencoba untuk mendapatkan

74
00:03:31,240 --> 00:03:34,050
‫semua tur, Anda akan melihat bahwa durasi berminggu-minggu

75
00:03:34,050 --> 00:03:35,768
‫tidak ditemukan di sini.

76
00:03:35,768 --> 00:03:38,660
‫Dan itu karena kita perlu secara eksplisit mendefinisikan

77
00:03:38,660 --> 00:03:41,740
‫dalam skema kita bahwa kita menginginkan properti virtual dalam

78
00:03:41,740 --> 00:03:42,683
‫output kita.

79
00:03:43,758 --> 00:03:48,758
‫Dan jadi ingat bagaimana saya mengatakan itu ke luwak ini. skema, kita tidak hanya dapat

80
00:03:49,320 --> 00:03:51,650
‫meneruskan objek dengan

81
00:03:51,650 --> 00:03:54,050
‫definisi skema itu sendiri,

82
00:03:54,050 --> 00:03:56,943
‫tetapi juga objek untuk opsi skema.

83
00:03:58,070 --> 00:04:00,579
‫Jadi mari kita tambahkan di

84
00:04:00,579 --> 00:04:04,810
‫sini di akhir, jadi objek pertama di sini adalah definisi

85
00:04:04,810 --> 00:04:07,630
‫skema, dan sekarang objek kedua untuk opsi.

86
00:04:07,630 --> 00:04:11,260
‫Dan yang perlu kita tentukan di sini adalah dua

87
00:04:12,390 --> 00:04:15,410
‫properti JSON di sini, dan apa yang

88
00:04:15,410 --> 00:04:19,453
‫kami katakan adalah bahwa setiap kali data benar-benar dikeluarkan sebagai JSON,

89
00:04:20,480 --> 00:04:22,710
‫kami ingin virtual menjadi true.

90
00:04:23,681 --> 00:04:26,657
‫Jadi pada dasarnya virtual menjadi bagian dari output.

91
00:04:27,800 --> 00:04:30,000
‫Dan sekarang saya menduplikasi ini karena kami

92
00:04:30,000 --> 00:04:31,923
‫juga ingin mengatakan untuk menolak.

93
00:04:33,370 --> 00:04:36,037
‫Jadi pada dasarnya ketika data dikeluarkan

94
00:04:36,037 --> 00:04:37,320
‫sebagai objek.

95
00:04:37,320 --> 00:04:40,010
‫Jadi jika kita sekarang kembali ke sini, kita

96
00:04:40,010 --> 00:04:41,993
‫seharusnya dapat melihat durasi minggu.

97
00:04:43,120 --> 00:04:46,550
‫Mari kita tunggu, dan memang, ini dia.

98
00:04:46,550 --> 00:04:51,053
‫Jadi lima hari, dan jadi 0. 71 minggu.

99
00:04:52,250 --> 00:04:55,800
‫Di sini kita punya tujuh hari, jadi itu satu minggu.

100
00:04:55,800 --> 00:04:59,810
‫Oke, jadi itu benar-benar berfungsi, bagus.

101
00:04:59,810 --> 00:05:01,680
‫Sekarang satu hal yang

102
00:05:01,680 --> 00:05:04,840
‫perlu kita ingat adalah bahwa kita tidak dapat menggunakan

103
00:05:04,840 --> 00:05:07,840
‫properti virtual ini di sini dalam kueri, karena secara

104
00:05:07,840 --> 00:05:09,980
‫teknis mereka bukan bagian dari database.

105
00:05:09,980 --> 00:05:11,370
‫Jadi kita

106
00:05:11,370 --> 00:05:16,370
‫tidak bisa mengatakan, misalnya, wisata. temukan di mana durasi minggu sama dengan satu.

107
00:05:16,618 --> 00:05:19,660
‫Itu tidak akan berhasil, sekali lagi karena properti

108
00:05:19,660 --> 00:05:22,520
‫ini sebenarnya bukan bagian dari database.

109
00:05:22,520 --> 00:05:25,330
‫Sekarang tentu saja kita juga dapat

110
00:05:25,330 --> 00:05:28,450
‫melakukan konversi ini setiap kali setelah kita

111
00:05:28,450 --> 00:05:30,890
‫mengkueri data, misalnya, seperti di

112
00:05:30,890 --> 00:05:34,240
‫pengontrol, tetapi itu bukan praktik terbaik hanya karena

113
00:05:34,240 --> 00:05:36,960
‫kita ingin mencoba menjaga logika bisnis

114
00:05:36,960 --> 00:05:39,830
‫dan logika aplikasi terpisah jauh. mungkin, ingat?

115
00:05:39,830 --> 00:05:42,980
‫Jadi, itulah keseluruhan pembicaraan tentang model gemuk dan

116
00:05:42,980 --> 00:05:46,950
‫pengontrol tipis yang telah kita bicarakan sebelumnya yang mengatakan bahwa

117
00:05:46,950 --> 00:05:48,850
‫kita harus memiliki

118
00:05:48,850 --> 00:05:52,390
‫model dengan logika bisnis sebanyak yang dapat kita berikan

119
00:05:52,390 --> 00:05:54,460
‫kepada mereka dan pengontrol tipis

120
00:05:54,460 --> 00:05:56,598
‫dengan logika bisnis sesedikit mungkin.

121
00:05:56,598 --> 00:05:59,840
‫Jadi, properti virtual seperti ini sebenarnya adalah contoh bagus

122
00:05:59,840 --> 00:06:01,970
‫tentang bagaimana kita bisa mencapai

123
00:06:01,970 --> 00:06:03,483
‫arsitektur semacam itu.

124
00:06:04,410 --> 00:06:06,460
‫Jadi mengetahui durasi dalam minggu

125
00:06:06,460 --> 00:06:09,070
‫adalah logika bisnis karena berkaitan dengan bisnis

126
00:06:09,070 --> 00:06:11,900
‫itu sendiri, bukan dengan hal-hal seperti permintaan

127
00:06:11,900 --> 00:06:14,550
‫atau tanggapan, jadi kami melakukan perhitungan tepat

128
00:06:14,550 --> 00:06:16,460
‫di model tempatnya dan bukan

129
00:06:16,460 --> 00:06:17,863
‫di pengontrol.

