Когда я пытаюсь опубликовать данные, появляется сообщение об ошибке «Внутренняя ошибка сервера» - PullRequest
0 голосов
/ 05 ноября 2018

Это часть схемы моей базы данных

var commentSchema = new mongoose.Schema({
    comment: {
        type: String,
        required: true
    },
    commentOwner: {
        type: String,
        required: true
    }
});

и это часть моего контроллера angularjs

vm.addComment = function () {
        var id = $routeParams.id;
        var comment = vm.myComment;
        console.log(comment);
        var postData = {
            comment: comment,
            commentOwner: own
        };
        console.log(postData);
            postFactory.postComment(id, postData).then(function (response) {
            if (response.status === 200) {
                $route.reload();
                toastr["success"]("Basic Info Saved Successfully");
            }
        }).catch(function (error) {
            // console.log(error);
            toastr["error"]("unsuccessful.Please try again!");
        });

    }

это моя фабрика

function postComment(postId, comment){
        return $http.post('http://localhost:8080/api/posts/' + postId + '/comments', comment).then(complete).catch(failed);
    }
    function complete(response) {
        return response;
    }

    function failed(error) {
        console.log(error);
    }

и моя HTML-часть выглядит так

<form name="vm.commentForm" ng-submit="vm.addComment()">
        <div class="col-md-9">
            <input type="text" class="form-control" placeholder="Add your comment here"  required
                ng-model="vm.myComment" aria-label="comment" aria-describedby="sizing-addon1">
        </div>
        <button style="margin:15px;" type="submit" class="btn btn-outline-primary">
            <i class="fa fa-send"></i>&nbsp;Send
        </button>
    </form>

и это мой контроллер экспресс-маршрутов

module.exports.addOneComment = function (req, res) {
    var id = req.params.postId;

    console.log('Add new comment', id);

    Post
        .findById(id)
        .select('comments')
        .exec(function (err, doc) {
            var response = {
                status: 200,
                message: doc
            };
            if (err) {
                console.log("Error finding the post");
                res.status(500).json({ "message": err });
            } else if (!doc) {
                console.log("PostId not found in database", id);
                res.status(404).json({ "message": "PostId not found in database" });
            }
            if (doc) {
                _addComment(req, res, doc);
            } else {
                res
                    .status(200)
                    .json({ "message": "Comment Added!" });
            }
        });
}
var _addComment = function (req, res, doc) {
    doc.comments.push({
        comment: req.body.comment,
        commentOwner: req.body.commentOwner
    });
    doc.save(function (err, postUpdated) {
        if (err) {
            res
                .status(500)
                .json(err);
        } else {
            res
                .status(200)
                .json(postUpdated.comments[postUpdated.comments.length - 1]);
        }
    });
}

когда я пытаюсь отправить сообщение с помощью почтальона, оно работает нормально, но я не могу опубликовать данные из самого приложения и генерирует сообщение об ошибке «Внутренняя ошибка сервера». Так что вы, ребята, можете сказать мне, в чем моя ошибка? большое спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

В этом коде единственная возможность, которую я вижу, это doc.save. Попробуйте добавить console.error(err) в ваш doc.save обратный вызов для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...