Conversation
| console.log("Нельзя вывести столько постов. Промежуток вывода не совпадает с количеством постов"); | ||
| } | ||
| else{ | ||
| var sortedArrOfPosts = []; |
There was a problem hiding this comment.
- А где фильтрация то ??
- Array.prototype.sort, Array.prototype.filter etc изучить и использовать
| for(var i=0;i<photoPosts.length;i++){ | ||
| if(photoPosts[i].id == idOfPost) return photoPosts[i]; | ||
| } | ||
| return "Пост не найден"; |
There was a problem hiding this comment.
Тестовый аутпут в консоль такой можно, но вот результат функции всетаки не должен быть "от мишки до книжки". Четко либо пост, либо его отсутствие null (что тоже кстати typeof null === 'object')
| } | ||
|
|
||
| function getPhotoPost(idOfPost){ | ||
| for(var i=0;i<photoPosts.length;i++){ |
| } | ||
|
|
||
| function validatePhotoPost(postForCheck){ | ||
| if(postForCheck.id == null) { |
There was a problem hiding this comment.
а если оно undefined, {}, [1, 2, 3] или любая другая лабуда?
тут как в Java не прокатит :)
проверяем либо на тип
либо говорим что на совести программиста и проверяем что оно есть (но не в этом конкретном варианте)
| console.log("Пустое поле id"); | ||
| return false;} | ||
|
|
||
| for(var i=0;i < photoPosts.length;i++){ |
| return false; | ||
| } | ||
| } | ||
| if(postForCheck.description == null || postForCheck.description.length>200) { |
There was a problem hiding this comment.
Читаем про == и ===
и помним что лучше == не использовать
| console.log("Неверный description"); | ||
| return false; | ||
| } | ||
| if(postForCheck.author == null || postForCheck.author == "") { |
| } | ||
|
|
||
| function addPhotoPost(newPost){ | ||
| if(validatePhotoPost(newPost) == false) return false; |
There was a problem hiding this comment.
сравнивать boolean не надо !
if (isValid(post)) {
posts.push(post);
return true;
}
| } | ||
|
|
||
| function editPhotoPost(idForEd, postForEd){ | ||
| for(var i=0; i<photoPosts.length;i++){ |
There was a problem hiding this comment.
Array.prototype.find
А дальше вспоминаем что вернется референс и его можно менять
| } | ||
|
|
||
| function removePhotoPost(idForRem){ | ||
| for(var i=0;i<photoPosts.length;i++){ |
| @@ -0,0 +1,290 @@ | |||
| (function() { | |||
There was a problem hiding this comment.
За отступами следим пожалуйста , если пользуемся WebStorm/Idea то выделяем все и Ctrl-Alt-L.
Если что другое то следим сами или ставим плагинчики на автоформат.
|
|
||
| function removePhotoPost(idForRem){ | ||
| var postOfId = getPhotoPost(idForRem); | ||
| postOfId.postVisibility = false; |
There was a problem hiding this comment.
А где проверка что postOfId не null ?
Почему "Пост для удаления не найден" в любом случае?
и результат почему лож в любом случае?
| } | ||
|
|
||
| function addPhotoPost(newPost){ | ||
| if(!validatePhotoPost(newPost)) return false; |
There was a problem hiding this comment.
Скобочки блока { }
стараемся ставить всегда, это уменьшает вероятность ошибиться и считается правилом хорошего тона.
| if(!postOfId) { | ||
| return false; | ||
| } | ||
| if(postForEd.description){ |
There was a problem hiding this comment.
Можно конечно и так до первой проверки, но это как-то странненько,
у нас есть validate для поста, почему бы его не заюзать, единственный вопрос как не попортить данные в случае чего - делаем копию.
Копию можно сделать используя ES6 фитчу
let copy = Object.assign({}, obj);
либо для сериализуемых объектов можем сделать deepCoppy:
var copy = JSON.parse(JSON.stringify(obj));
либо руками делаем (отдельный метод)
где ручками копируем как нам надо филд за филдом.
| } | ||
| else{ | ||
| var sortedArrOfPosts = photoPosts; | ||
| sortedArrOfPosts = sortedArrOfPosts.slice(postStart, number+postStart).sort(dateComparator); |
There was a problem hiding this comment.
Сначала фильтруем потом отрезаем, наоборот это не то что ожидается от этой функции
| return post.createdAt === filterConfig.createdAt; | ||
| }); | ||
| } | ||
| sortedArrOfPosts = sortedArrOfPosts.slice(postStart, number + postStart).sort(dateComparator); |
There was a problem hiding this comment.
сортируем тоже раньше чем обрезаем выборку.
| } | ||
|
|
||
| function dateComparator(date1, date2) { | ||
| return date1.createdAt - date2.createdAt; |
|
|
||
| function editPhotoPost(idForEd, postForEd) { | ||
| var postOfId = getPhotoPost(idForEd); | ||
| if (!validatePhotoPost(postOfId)) { |
There was a problem hiding this comment.
нужно предусмотреть момент с отключением проверки на уникальность id, или вообще вынести её отдельно, сейчас тут будет валится векгда - это раз
зачем проверять пост который уже в базе? - это два
| } | ||
| var postCopy = JSON.parse(JSON.stringify(postOfId)); | ||
| if (postForEd.description) { | ||
| if (typeof postForEd.description !== "string" || postForEd.description.length > 200 || postForEd.description === "") { |
There was a problem hiding this comment.
смысл с комментарием про validate был в том чем:
мы делаем копию нужного поста, без проверок меняем его в соответствии с проброшенным объектом
после этого делаем validate, и если с копией все ок, заменяем оригинал на полученную копию в базе.
| } | ||
| postCopy.hashTags = postForEd.hashTags; | ||
| } | ||
| clonePost(postOfId, postCopy); |
There was a problem hiding this comment.
можно и так, но луше почитать про Object.assign, ну либо уже использовать этот метод тогда везде, например для создания копии делать так clonePost({}, originPost);
| } | ||
|
|
||
| function clonePost(post1, post2){ | ||
| if(post2.description){ |
There was a problem hiding this comment.
А зачем проверки? Clone это clone .
Хотя это кстати не совсем clone.
| sortedArrOfPosts = sortedArrOfPosts.filter(function (post) { | ||
| return post.createdAt === filterConfig.createdAt; | ||
| }); | ||
| } |
| return false; | ||
| } | ||
|
|
||
| if (typeof postForCheck.description !== "string" || postForCheck.description.length > 200 || postForCheck.description === "") { |
There was a problem hiding this comment.
return validateForEditing(postForCheck);
No description provided.