I don’t understand…why would I need an or statement to prove that the “_id” input on the HTML form does not exist?? If the item on the form does not exist, is it a ‘’ or a null object? Wouldn’t the falsy test (!_id) make it pass already?? Maybe I’ve been looking at it too long.
I dont think it means if an id input on the form does not exist. I am thinking what its saying is that the server is expecting a certain parameter to be an id…
like you can send an request using postman to that route for example. and maybe what I send is missing an Id parameter. so I believe what its asking for is if that parameter does not exist it wants you to handle it that way. It makes sense?
P.S. Ive not done that challenge, so maybe someone with more experience will comment, however what I dont understand about it… I mean what exactly are you doing with on that route, you said put request, are you updating an existing item or are you creating a new one? If you are updating an exisitng resource whats the necessity of that check in the first place?
I am not sure what you are wanting explanation for, but I assume it is this:
In JS, unless an object is told to be null, then it is notnull. That is, if _id is not given, then when you try to reference _id, it is undefined (not null).
Regardless, the check if (!_id) will catch the following cases:
null
undefined
''
[]
'0'
I do not understand the required='' bit. I was unaware required could take a value.
Sorry for the vague explanation, it was really late last night. But yes, @Sky020 I was asking for what (!_id) catches for, so you hit it on the head. Thanks for that explanation.
For issue tracker, the one of the challenges asks for updating the database using the HTML form:
As part of updating issue on apitest, the form provides an input for “_id” of the issue in the database. If the user input “_id” is left blank, the return value should be {error: ‘missing _id’}.
Therefore, to make the test pass, as part of the “.put” api route, (before calling model.findIdAndUpdate) I had to write this:
Sometimes Repl.it is glitchy? And the FCC doesn’t pass, but eventually this did.
@Sky020 , your question about the required='' ~ This was written by the FCC team, as part of the built-in HTML on the Repl.it boilerplate. Basically, it seems that when you put required='' as part of the input, it becomes an in-built “checker” that makes sure the user has to fill out the field. If you don’t fill out this part, and you hit submit, you get this popup:
Honestly, this feels redundant, because that means that both the HTML and the JS are checking whether the user has input this value. This was confusing for me until I started looking at the HTML boilerplate.
Thanks, for showing the change in functionality with required='' and required.
Just to clarify the main idea behind the project: You are supposed to be focusing on the backend, during this project. This is why the backend projects have you write APIs (the different endpoints of your server) to achieve otherwise common frontend functionality.
Essentially, you will find many programs have APIs targetable by both an integrated frontend, as well as miscellaneous other services. Take GitHub as an example:
There is a UI-based webapp users can use to submit PRs to repos
There is also an available API with no UI, users can use to submit PRs to repos
So, there needs to be both a clear communication to those who use your UI-based app, and those who use the API directly (checking for _id or not should be done on both ends).