1 00:00:01,130 --> 00:00:02,940 So now that you know the basics 2 00:00:02,940 --> 00:00:04,910 of Mongoose by implementing 3 00:00:04,910 --> 00:00:07,240 all the four correct operations, 4 00:00:07,240 --> 00:00:11,440 it's now to finally matter our tour data a bit better 5 00:00:11,440 --> 00:00:14,423 in order to make the tours more complete. 6 00:00:15,990 --> 00:00:20,240 So at this point, our tour documents can only have a name, 7 00:00:20,240 --> 00:00:22,410 a rating, and a price. 8 00:00:22,410 --> 00:00:25,060 But of course, we need so much more data here, 9 00:00:25,060 --> 00:00:29,320 because the goal is to have a very data-rich API, 10 00:00:29,320 --> 00:00:30,940 like this one. 11 00:00:30,940 --> 00:00:33,390 So let's take a look at the final version 12 00:00:33,390 --> 00:00:35,453 actually here as a reference. 13 00:00:36,660 --> 00:00:39,010 And so that's this one here. 14 00:00:39,010 --> 00:00:41,230 And so we get all tours, 15 00:00:41,230 --> 00:00:44,330 and it's gonna look a bit like this. 16 00:00:44,330 --> 00:00:46,620 Okay, so you see that on each tour, 17 00:00:46,620 --> 00:00:49,750 we have a start location, we have ratings average, 18 00:00:49,750 --> 00:00:52,543 ratings quantity, images, start dates. 19 00:00:53,410 --> 00:00:57,400 Guides, name, duration, maximum group size, 20 00:00:57,400 --> 00:00:58,910 difficulty, price, summary, 21 00:00:58,910 --> 00:01:01,323 description, image cover, locations. 22 00:01:02,930 --> 00:01:07,930 Even a slug, reviews, duration in weeks, and the ID. 23 00:01:07,960 --> 00:01:10,070 So you see a lot of data, 24 00:01:10,070 --> 00:01:12,860 and we're not gonna add all of the data 25 00:01:12,860 --> 00:01:14,260 in this lecture here. 26 00:01:14,260 --> 00:01:17,750 There are some pieces that we cannot add as of yet, 27 00:01:17,750 --> 00:01:22,330 but we can of course make it a bit more complete, okay? 28 00:01:22,330 --> 00:01:27,193 And let's actually save this here, like as a reference, 29 00:01:30,560 --> 00:01:33,550 and get all tours, and I'm gonna put it outside 30 00:01:34,630 --> 00:01:36,770 of any folder. 31 00:01:36,770 --> 00:01:39,643 So let's put it just here at the top. 32 00:01:40,810 --> 00:01:43,310 And that doesn't work for some reason. 33 00:01:43,310 --> 00:01:45,060 Okay, let's just put it here, then. 34 00:01:47,680 --> 00:01:50,903 Okay, let's get, 35 00:01:52,390 --> 00:01:53,550 that's correct. 36 00:01:53,550 --> 00:01:55,570 And so again, I'm leaving it here, 37 00:01:55,570 --> 00:01:58,400 in order to keep comparing what we have 38 00:01:58,400 --> 00:02:00,330 with what we're aiming for. 39 00:02:00,330 --> 00:02:02,870 So anyway, let's go back, 40 00:02:02,870 --> 00:02:05,250 and start with what we have already, 41 00:02:05,250 --> 00:02:06,560 and we have the name. 42 00:02:06,560 --> 00:02:08,520 And so that's already good enough, 43 00:02:08,520 --> 00:02:11,000 so for now I'm gonna leave it like this. 44 00:02:11,000 --> 00:02:16,000 So the name, then we also want a duration. 45 00:02:19,780 --> 00:02:24,780 And that duration is a number, and it is required. 46 00:02:26,570 --> 00:02:29,990 So set it to true, and then the message is, 47 00:02:29,990 --> 00:02:33,603 a tour must have a duration. 48 00:02:35,100 --> 00:02:38,450 So these required validators here basically 49 00:02:38,450 --> 00:02:40,870 are the only validators that I'm gonna add 50 00:02:40,870 --> 00:02:43,920 to each of these fields here for now. 51 00:02:43,920 --> 00:02:46,120 Later on, when we're going to talk more in detail 52 00:02:46,120 --> 00:02:48,790 about validators, we're gonna add a lot more. 53 00:02:48,790 --> 00:02:50,700 But again, for now, I just want to make 54 00:02:50,700 --> 00:02:54,150 some of these fields, not all of them, required. 55 00:02:54,150 --> 00:02:56,110 Next up, we have the group size. 56 00:02:56,110 --> 00:02:58,640 So basically, how many people can at most 57 00:02:58,640 --> 00:03:01,030 take part of one tour. 58 00:03:01,030 --> 00:03:03,560 And so I call that one the maxGroupSize. 59 00:03:06,530 --> 00:03:09,793 And so that again should be a number, 60 00:03:12,330 --> 00:03:17,070 and it is again required. 61 00:03:17,070 --> 00:03:22,070 Tour must have a group size. 62 00:03:24,150 --> 00:03:25,900 Don't forget the comma here. 63 00:03:25,900 --> 00:03:28,653 Next up, we also need a difficulty. 64 00:03:36,010 --> 00:03:39,470 And this one is a string, and later on, 65 00:03:39,470 --> 00:03:42,080 we will define that it should be either medium, 66 00:03:42,080 --> 00:03:44,920 easy, or difficult, but again, 67 00:03:44,920 --> 00:03:47,040 that is actually a validator, 68 00:03:47,040 --> 00:03:50,130 and I'm gonna leave that for a later time. 69 00:03:50,130 --> 00:03:52,440 Okay, for now, I'm just saying 70 00:03:52,440 --> 00:03:54,423 that it should have a difficulty. 71 00:03:58,640 --> 00:04:02,100 Next up, let's talk about the ratings. 72 00:04:02,100 --> 00:04:05,010 So right now we have a field called Rating, 73 00:04:05,010 --> 00:04:07,080 but in fact we want to have one field 74 00:04:07,080 --> 00:04:08,610 for the rating average, 75 00:04:08,610 --> 00:04:10,930 and one field for the ratings quantity. 76 00:04:10,930 --> 00:04:13,620 So basically the amount of ratings that there are. 77 00:04:13,620 --> 00:04:17,430 So later, there will be another resource called reviews, 78 00:04:17,430 --> 00:04:20,080 where users will be able to write reviews 79 00:04:20,080 --> 00:04:22,330 about tours and give ratings. 80 00:04:22,330 --> 00:04:25,030 And that's gonna be a completely different resource, 81 00:04:25,030 --> 00:04:27,060 and a completely different model. 82 00:04:27,060 --> 00:04:29,770 But still, we want to have basically a summary 83 00:04:29,770 --> 00:04:33,660 of these ratings and of these reviews here in the tours. 84 00:04:33,660 --> 00:04:36,630 Alright, and the reasons for that you will learn a bit later 85 00:04:36,630 --> 00:04:41,240 once we start how and why we model data in NoSQL databases, 86 00:04:41,240 --> 00:04:43,900 and specifically in MongoDB. 87 00:04:43,900 --> 00:04:47,913 Okay, for now, let's just add the ratings average, 88 00:04:49,150 --> 00:04:50,920 and the ratings quantity. 89 00:04:50,920 --> 00:04:53,220 Okay, so we leave this here as number, 90 00:04:53,220 --> 00:04:54,643 and with this default, 91 00:04:55,500 --> 00:04:58,590 and the ratings quantity, ratingsQuantity. 92 00:05:00,930 --> 00:05:03,803 That should of course also be a number, 93 00:05:06,490 --> 00:05:09,160 and the default will be zero. 94 00:05:09,160 --> 00:05:11,060 Because of course, in the beginning, 95 00:05:11,060 --> 00:05:14,183 there will be absolutely no reviews, when the tour is new. 96 00:05:15,590 --> 00:05:18,680 Now I didn't give these two properties here 97 00:05:18,680 --> 00:05:21,580 a required value, because it's not the user 98 00:05:21,580 --> 00:05:22,960 who creates these tours 99 00:05:22,960 --> 00:05:26,100 who will actually specify these values, right? 100 00:05:26,100 --> 00:05:27,720 So when we create a new tour, 101 00:05:27,720 --> 00:05:30,310 we will never specify the ratingsAverage, 102 00:05:30,310 --> 00:05:32,260 neither the ratingsQuantity, 103 00:05:32,260 --> 00:05:34,720 because that will later on be calculated 104 00:05:34,720 --> 00:05:37,570 from the real reviews, okay? 105 00:05:37,570 --> 00:05:40,040 Next up, we have the price here, 106 00:05:40,040 --> 00:05:41,920 so that's fine like this, 107 00:05:41,920 --> 00:05:44,403 and we might also have a discount. 108 00:05:45,390 --> 00:05:47,110 So let's say that this company, 109 00:05:47,110 --> 00:05:51,260 so Natours, wants to give a discount to one of the tours 110 00:05:51,260 --> 00:05:53,250 at some point, and so they can specify 111 00:05:53,250 --> 00:05:55,463 a discount price here as well. 112 00:05:57,090 --> 00:06:00,850 So priceDiscount, and so let's just put it here at number. 113 00:06:00,850 --> 00:06:03,220 We don't need any schema type options here. 114 00:06:03,220 --> 00:06:04,970 For example, it's not required, 115 00:06:04,970 --> 00:06:07,270 and so for now, let's just leave it like this. 116 00:06:08,170 --> 00:06:12,313 Next up, we can specify a summary of the tour. 117 00:06:14,120 --> 00:06:17,283 So the summary is of type String. 118 00:06:19,250 --> 00:06:22,040 But I will not actually make it required. 119 00:06:22,040 --> 00:06:24,540 Okay, and that's simply because it's not 120 00:06:24,540 --> 00:06:27,070 on the front page of our website. 121 00:06:27,070 --> 00:06:29,940 Okay, so basically it's not on the overview. 122 00:06:29,940 --> 00:06:31,800 And I'm gonna show you that in a second, 123 00:06:31,800 --> 00:06:33,070 but for now let me just add here 124 00:06:33,070 --> 00:06:36,330 another schema type option that I didn't show you yet, 125 00:06:36,330 --> 00:06:37,910 which is called trim. 126 00:06:37,910 --> 00:06:40,513 And trim only works for strings. 127 00:06:41,820 --> 00:06:43,650 And I will set it to true. 128 00:06:43,650 --> 00:06:46,710 So remember how I said that there are different schema types 129 00:06:46,710 --> 00:06:49,030 for different types here, 130 00:06:49,030 --> 00:06:52,320 and so for string, we have a schema type which is trim 131 00:06:52,320 --> 00:06:54,430 which will remove all the white space 132 00:06:54,430 --> 00:06:57,310 in the beginning and in the end of the string. 133 00:06:57,310 --> 00:07:00,363 Okay, and so if someone enters, for example, 134 00:07:01,570 --> 00:07:06,360 this tour, blah blah blah, doesn't matter. 135 00:07:06,360 --> 00:07:08,720 So if someone enters this, 136 00:07:08,720 --> 00:07:10,940 then all this whitespace in the end 137 00:07:10,940 --> 00:07:13,473 and in the beginning here will get cut. 138 00:07:15,190 --> 00:07:17,870 And actually, we can put the same thing on the name, 139 00:07:17,870 --> 00:07:19,003 for example, here. 140 00:07:20,810 --> 00:07:22,223 Okay, why not? 141 00:07:23,350 --> 00:07:24,720 So let's leave it like this. 142 00:07:24,720 --> 00:07:27,430 Here I see that it's actually called duration, 143 00:07:27,430 --> 00:07:28,403 not durations. 144 00:07:30,450 --> 00:07:35,240 Alright, so that's the summary, which is also misspelled. 145 00:07:35,240 --> 00:07:37,110 So summary like this. 146 00:07:37,110 --> 00:07:38,977 Oh, and yeah, now I wanted to show you 147 00:07:38,977 --> 00:07:40,633 the Natours website, actually. 148 00:07:42,090 --> 00:07:44,593 So that's back to our Mongoose documentation. 149 00:07:46,890 --> 00:07:48,890 But this is what I want to show you. 150 00:07:48,890 --> 00:07:53,540 So Natours.dev, which is the original of this application, 151 00:07:53,540 --> 00:07:56,740 and so this is the data that we have in our API, 152 00:07:56,740 --> 00:07:59,380 and that we also of course need in the database. 153 00:07:59,380 --> 00:08:00,770 So we have all this data. 154 00:08:00,770 --> 00:08:05,260 So this tour name, we have the difficulty, 155 00:08:05,260 --> 00:08:07,800 we have the duration, we have, 156 00:08:07,800 --> 00:08:10,930 this is a summary, then we have a start location, 157 00:08:10,930 --> 00:08:13,050 we have the amount of locations, 158 00:08:13,050 --> 00:08:14,800 we have a start date, 159 00:08:14,800 --> 00:08:17,602 we have the maximum group size in here, 160 00:08:17,602 --> 00:08:19,810 and we have to price, the rating average, 161 00:08:19,810 --> 00:08:21,193 the rating quantity. 162 00:08:22,050 --> 00:08:23,683 We also have an image here. 163 00:08:24,600 --> 00:08:27,833 And then here on the details page is where we have, 164 00:08:30,045 --> 00:08:32,120 we have the summary down here. 165 00:08:32,120 --> 00:08:36,330 We have the guides that I just showed you in Postman before. 166 00:08:36,330 --> 00:08:38,080 We have some more images. 167 00:08:38,080 --> 00:08:40,970 We have here all the locations, 168 00:08:40,970 --> 00:08:42,673 and we have all the reviews. 169 00:08:44,220 --> 00:08:47,570 Okay, so as I was telling you, 170 00:08:47,570 --> 00:08:51,340 not all the data is on the Overview page, 171 00:08:51,340 --> 00:08:54,500 and so not all the data is also required. 172 00:08:54,500 --> 00:08:57,623 Okay, so let's move back here. 173 00:08:58,490 --> 00:09:01,333 Next up, I want to add a description. 174 00:09:06,510 --> 00:09:10,283 And this is a type of String, 175 00:09:11,850 --> 00:09:14,740 and let's set trim to true again. 176 00:09:14,740 --> 00:09:16,520 And I just remembered that the summary 177 00:09:16,520 --> 00:09:19,250 is actually on the Overview page. 178 00:09:19,250 --> 00:09:22,280 And so let's make this one required. 179 00:09:22,280 --> 00:09:24,223 So you add here at the end, 180 00:09:27,010 --> 00:09:27,843 true, 181 00:09:30,220 --> 00:09:34,010 a tour must have a description. 182 00:09:34,010 --> 00:09:39,010 Okay, next up, we will specify the imageCover. 183 00:09:42,344 --> 00:09:45,320 And so that's the images that you see on the overview page 184 00:09:45,320 --> 00:09:48,463 and so let's set this one actually to require this role. 185 00:09:50,060 --> 00:09:52,880 So the type should be string, 186 00:09:52,880 --> 00:09:55,670 because basically this will simply be the name 187 00:09:55,670 --> 00:09:57,860 of the image here, which then later, 188 00:09:57,860 --> 00:10:01,050 we will be able to read from the file system. 189 00:10:01,050 --> 00:10:03,850 Okay, so really just the name of the image. 190 00:10:03,850 --> 00:10:07,040 So basically a reference will be stored in the database. 191 00:10:07,040 --> 00:10:09,530 And that's a very common practice, okay? 192 00:10:09,530 --> 00:10:13,270 So we could store the entire image as well in a database, 193 00:10:13,270 --> 00:10:15,400 but that's usually not a good idea. 194 00:10:15,400 --> 00:10:18,860 We simply leave the images somewhere in the file system 195 00:10:18,860 --> 00:10:21,340 and then put the name of the image itself 196 00:10:21,340 --> 00:10:22,823 in the database as a field. 197 00:10:24,370 --> 00:10:27,493 So set it to required, true, 198 00:10:28,560 --> 00:10:32,990 a tour must have a cover image. 199 00:10:32,990 --> 00:10:36,550 Nice, next one is the rest of the images. 200 00:10:36,550 --> 00:10:39,810 And now here, we have something new, okay? 201 00:10:39,810 --> 00:10:41,740 Because we have multiple images, 202 00:10:41,740 --> 00:10:44,750 and I want to save those images as an array. 203 00:10:44,750 --> 00:10:47,010 And actually, as an array of strings. 204 00:10:47,010 --> 00:10:50,110 And so the way to do it is to simplify specify here 205 00:10:50,110 --> 00:10:54,260 an array of strings, just like this. 206 00:10:54,260 --> 00:10:57,330 So I want it still to be of type string, 207 00:10:57,330 --> 00:10:59,230 but I want it to be an array. 208 00:10:59,230 --> 00:11:02,580 So an array in which we have a number of strings. 209 00:11:02,580 --> 00:11:06,441 And so that's how I can define this, okay? 210 00:11:06,441 --> 00:11:09,100 And we will use this later for something else again. 211 00:11:09,100 --> 00:11:11,750 And so we will then actually pass in 212 00:11:11,750 --> 00:11:14,680 more schema type options than just a type, 213 00:11:14,680 --> 00:11:18,660 and so by then we will use that again, alright? 214 00:11:18,660 --> 00:11:21,170 For now, though, let's move on, 215 00:11:21,170 --> 00:11:23,970 and the next field that I wanted to add here 216 00:11:23,970 --> 00:11:26,207 is the createdAt. 217 00:11:26,207 --> 00:11:29,230 And the createdAt field should basically be a timestamp 218 00:11:29,230 --> 00:11:33,290 that is set by the time that the user gets a new tour. 219 00:11:33,290 --> 00:11:36,433 So this here should of course be added automatically. 220 00:11:37,660 --> 00:11:40,580 Again, at the time the tour is created. 221 00:11:40,580 --> 00:11:42,580 So how do we do that? 222 00:11:42,580 --> 00:11:46,560 Well first of all, we set the type to Date. 223 00:11:46,560 --> 00:11:50,840 So Data is yet another JavaScript built-in datatype, 224 00:11:50,840 --> 00:11:52,253 and so we can use that here. 225 00:11:53,510 --> 00:11:56,210 Okay, so the type is Date, 226 00:11:56,210 --> 00:11:59,010 and then we simply need to set a default, 227 00:11:59,010 --> 00:12:00,840 and the default is the JavaScript 228 00:12:00,840 --> 00:12:04,870 built-in function Date.now. 229 00:12:04,870 --> 00:12:07,570 And I'm sure you are familiar with this one. 230 00:12:07,570 --> 00:12:11,390 So this will simply give us a timestamp in milliseconds, 231 00:12:11,390 --> 00:12:15,140 which basically represents the current millisecond. 232 00:12:15,140 --> 00:12:16,740 Alright, now in Mongo, 233 00:12:16,740 --> 00:12:20,390 this is now immediately converted to today's date 234 00:12:20,390 --> 00:12:24,153 in order to make more sense of this data, okay? 235 00:12:25,650 --> 00:12:30,650 So yeah, that's the automatically created timestamp. 236 00:12:30,900 --> 00:12:35,900 And now finally, we need to also pass in an array of dates. 237 00:12:36,400 --> 00:12:38,650 And now finally, to finish for now, 238 00:12:38,650 --> 00:12:43,033 we also want to able to define an array of start dates. 239 00:12:44,836 --> 00:12:49,500 So startDates, and again, we simply define an array, 240 00:12:49,500 --> 00:12:52,470 and then say that in there we want dates. 241 00:12:52,470 --> 00:12:56,240 Alright, so these startDates are basically different dates 242 00:12:56,240 --> 00:12:58,400 at which a tour starts. 243 00:12:58,400 --> 00:13:00,540 For example, we can have a tour starting 244 00:13:00,540 --> 00:13:02,280 in December this year, 245 00:13:02,280 --> 00:13:04,660 and then in February, the next year, 246 00:13:04,660 --> 00:13:06,580 and then another one in the summer, 247 00:13:06,580 --> 00:13:09,160 and so different dates for the same tour 248 00:13:09,160 --> 00:13:11,030 are simply different, let's say, 249 00:13:11,030 --> 00:13:14,550 instances of the tour starting on different dates. 250 00:13:14,550 --> 00:13:16,610 Alright, I hope that makes sense. 251 00:13:16,610 --> 00:13:19,730 Anyway, this one here will not be automatically created 252 00:13:19,730 --> 00:13:23,360 by MongoDB, and MongoDB will then automatically 253 00:13:23,360 --> 00:13:27,000 try to parse the string that we passed in as the date 254 00:13:27,000 --> 00:13:28,930 into a real JavaScript date. 255 00:13:28,930 --> 00:13:31,790 For example, we could pass in something like 256 00:13:31,790 --> 00:13:36,580 let's say 2021, March 21st, 257 00:13:36,580 --> 00:13:39,150 and again Mongo would then automatically parse 258 00:13:39,150 --> 00:13:41,199 this as a date. 259 00:13:41,199 --> 00:13:42,820 You can also specify the date. 260 00:13:42,820 --> 00:13:47,820 For example, saying 11 and 32 minutes, alright. 261 00:13:48,210 --> 00:13:51,800 Or we could also simply input a Unix timestamp, 262 00:13:51,800 --> 00:13:54,610 so a timestamp like in this format here. 263 00:13:54,610 --> 00:13:56,970 Okay, and so all of these formats, 264 00:13:56,970 --> 00:14:01,200 basically, Mongo will try to parse them into a date. 265 00:14:01,200 --> 00:14:03,853 And only if it can't, it will then throw an error. 266 00:14:04,762 --> 00:14:06,980 (exhales) So this was a lot of work. 267 00:14:06,980 --> 00:14:08,730 Let's give it a save here. 268 00:14:08,730 --> 00:14:11,530 And the way that we can then try this out 269 00:14:11,530 --> 00:14:13,850 is to go here to our dev-data, 270 00:14:13,850 --> 00:14:16,380 where we have this tour-simple.json file, 271 00:14:16,380 --> 00:14:19,343 which is the one we've been using in a previous section. 272 00:14:20,370 --> 00:14:21,790 All right. 273 00:14:21,790 --> 00:14:23,190 And so all I'm gonna do here 274 00:14:23,190 --> 00:14:26,023 is to just grab all this data here, 275 00:14:28,070 --> 00:14:33,070 and then use that one to create a new request, okay? 276 00:14:34,920 --> 00:14:38,170 So we want to create a new POST request here, 277 00:14:38,170 --> 00:14:39,500 and with all that data, 278 00:14:39,500 --> 00:14:41,650 instead of having to write it out manually. 279 00:14:42,660 --> 00:14:44,920 Okay, so pasting all of this here. 280 00:14:46,320 --> 00:14:49,580 And now indeed, we do not need the ID. 281 00:14:49,580 --> 00:14:50,750 So we needed it before, 282 00:14:50,750 --> 00:14:53,620 when we were doing our file-based API, 283 00:14:53,620 --> 00:14:57,200 but that's over now, so let's get rid of that. 284 00:14:57,200 --> 00:14:58,690 And so all the rest of the data 285 00:14:58,690 --> 00:15:02,250 that we marked that's required is now actually here, 286 00:15:02,250 --> 00:15:03,910 and even some more. 287 00:15:03,910 --> 00:15:07,593 So let's try to see what happens when we submit this. 288 00:15:08,500 --> 00:15:10,823 And now we get invalid data sent. 289 00:15:11,900 --> 00:15:16,450 So let's actually go to our tour controller, 290 00:15:16,450 --> 00:15:19,630 and in here, where we create a tour, 291 00:15:19,630 --> 00:15:22,610 instead of this message let's actually go back 292 00:15:22,610 --> 00:15:25,840 like we had it before and send the entire error 293 00:15:26,780 --> 00:15:29,633 just so we see what is actually going wrong. 294 00:15:30,800 --> 00:15:34,580 So send it here, okay, and the problem was 295 00:15:34,580 --> 00:15:37,483 that we have The Snow Adventure already defined. 296 00:15:38,550 --> 00:15:41,060 So let's first get rid of that. 297 00:15:41,060 --> 00:15:43,240 Yeah, so here we have The Snow Adventure, 298 00:15:43,240 --> 00:15:45,650 so we should delete this, and for that, 299 00:15:45,650 --> 00:15:49,130 I'm using our own API, 300 00:15:49,130 --> 00:15:51,713 so we can already put it to some use here. 301 00:15:53,100 --> 00:15:54,860 So that one should now be gone, 302 00:15:54,860 --> 00:15:58,690 and so now we should be able to add this as a new tour. 303 00:15:58,690 --> 00:16:01,590 And indeed, it's now here. 304 00:16:01,590 --> 00:16:05,040 So here is all the data that we just specified 305 00:16:05,040 --> 00:16:08,160 in this nice format. 306 00:16:08,160 --> 00:16:10,580 So what is interesting now is to actually see 307 00:16:10,580 --> 00:16:12,650 the createdAt timestamp. 308 00:16:12,650 --> 00:16:16,770 So that's the exact time at which I'm recording this video. 309 00:16:16,770 --> 00:16:19,480 And so this one was of course automatically created 310 00:16:19,480 --> 00:16:23,880 by this piece of code that we have somewhere here. 311 00:16:23,880 --> 00:16:24,853 Yeah, this. 312 00:16:25,970 --> 00:16:30,000 So that date is coming from this Date.now timestamp 313 00:16:30,000 --> 00:16:32,970 that JavaScript then automatically parses 314 00:16:32,970 --> 00:16:36,120 to this nice and readable date. 315 00:16:36,120 --> 00:16:39,290 Then here we have these arrays. 316 00:16:39,290 --> 00:16:41,407 Okay, so this array and another array, 317 00:16:41,407 --> 00:16:45,403 and of course, the automatically generated ID, alright? 318 00:16:46,740 --> 00:16:48,560 So if we come here now, 319 00:16:48,560 --> 00:16:50,940 we then have of course three tours. 320 00:16:50,940 --> 00:16:54,340 First, the other ones which are not so complete, 321 00:16:54,340 --> 00:16:56,510 and then all of these. 322 00:16:56,510 --> 00:16:59,450 Now what's interesting to see here is that Mongo 323 00:16:59,450 --> 00:17:04,050 also actually updated kind of the tours that we already had. 324 00:17:04,050 --> 00:17:06,290 So for example, we had rating here, 325 00:17:06,290 --> 00:17:08,750 but now that our schema completely changed, 326 00:17:08,750 --> 00:17:11,310 it then added this ratings average, 327 00:17:11,310 --> 00:17:15,600 and also this ratings quantity, both to their defaults, 328 00:17:15,600 --> 00:17:17,023 and the same actually here. 329 00:17:17,990 --> 00:17:20,410 It also created this timestamp. 330 00:17:20,410 --> 00:17:25,210 It created, yeah, it created images and start dates, 331 00:17:25,210 --> 00:17:27,080 with these empty arrays. 332 00:17:27,080 --> 00:17:29,373 And so it kind of changed all this data here. 333 00:17:30,240 --> 00:17:32,830 Alright, and so before we start moving on in a project, 334 00:17:32,830 --> 00:17:34,460 we should probably go ahead 335 00:17:34,460 --> 00:17:36,863 and delete all of this data here. 336 00:17:38,380 --> 00:17:40,800 And actually, what we're gonna do in the next video, 337 00:17:40,800 --> 00:17:43,660 now that our model is finally completed, 338 00:17:43,660 --> 00:17:45,250 at least for this section, 339 00:17:45,250 --> 00:17:47,410 we will go ahead and write a small script 340 00:17:47,410 --> 00:17:50,060 which will automatically import all of the tours 341 00:17:50,060 --> 00:17:51,713 from this JSON data. 342 00:17:52,550 --> 00:17:55,090 Okay, so from this JSON file, actually. 343 00:17:55,090 --> 00:17:57,170 So it will basically read the file, 344 00:17:57,170 --> 00:18:00,800 get all the tours, and import them into the database. 345 00:18:00,800 --> 00:18:03,830 Alright, so that's what we're gonna do next, 346 00:18:03,830 --> 00:18:06,160 because that will be hugely useful 347 00:18:06,160 --> 00:18:08,163 in this section and also in the future.