У меня есть сайт, на котором пользователь хранит ресурсы и делает статьи о них. В настоящее время я создаю раздел комментариев, в котором пользователи могут делать комментарии в статьях. У меня есть запрос put, который запускается от контроллера, который отправляет идентификатор статьи и комментарий.PUT Ошибка анализа запроса
, но я получаю следующее сообщение об ошибке,
SyntaxError: Unexpected token 1
at parse (/home/themis/webappionio/node_modules/body-parser/lib/types/json.js:83:15)
at /home/themis/webappionio/node_modules/body-parser/lib/read.js:116:18
at invokeCallback (/home/themis/webappionio/node_modules/raw-body/index.js:262:16)
at done (/home/themis/webappionio/node_modules/raw-body/index.js:251:7)
at IncomingMessage.onEnd (/home/themis/webappionio/node_modules/raw-body/index.js:308:7)
at emitNone (events.js:67:13)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at doNTCallback2 (node.js:441:9)
at process._tickCallback (node.js:355:17)
вот мой server.js:
//defining Articles Model
var ArticleSchema = mongoose.Schema({
_creatorname: String,
title : String,
body : String,
resource: String,
published : String,
comments: [{
_commentorname: String,
content : String,
date : String
}]
});
var Articles = mongoose.model("Articles", ArticleSchema);
//pushing comment into the specific article
app.put("/home/:id", function(req,res){
var _commentorname = req.user.username;
var content = req.body.comment;
var date = moment().tz("Europe/Athens").format("DD/MM/YY HH:mm");
Articles.findByIdAndUpdate(
id,
{$push: {"comments" : {_commentorname: _commentorname, content: content, date: date}}},
{safe: true, upsert: true, new : true},
function(err, article) {
console.log(err);
}
);
});
Мой контроллер:
$scope.addComment = function(id, comment) {
console.log(id);
console.log(comment);
$http.put("/home/" + id, comment)
.success(function(response){
$scope.all();
});
};
и мой HTML форма:
<div class="panel-footer">
<input type="text" id="userComment" ng-model="comment" class="form-control input-sm chat-input" placeholder="Write your message here..." />
<span class="input-group-btn">
<button class="btn btn-primary btn-sm" ng-click="addComment(article._id, comment)"><span class="glyphicon glyphicon-comment"></span> Add Comment</button>
</span>
</div>
Вот мой окончательный server.js
app.put("/home/:id", function(req,res){
var id = req.params.id;
Articles.findByIdAndUpdate(
id,
{$push: {"comments" : {_commentorname: req.user.username, content:req.body.comment}}},
{safe: true, upsert: true, new : true},
function (err, results) {
if (err)
{
res.send("there was a problem updating the information: " + err);
}
else {
res.format({
json: function() {
res.json(results);
}
});
}
}
);
});
Это поможет, если вы научились интерпретировать стек следы немного лучше. Источник ошибки исходит из «парсера тела», что означает, что отправленный отформатированный JSON имеет структурную ошибку. Это также помогает понять, что только потому, что вы «проект» использует различные компоненты технологии в стеке, это не значит, что ваша «проблема» или «вопрос» здесь включает в себя «все» из них. Обычно предполагается, что вы сначала сушите эти вещи и спросите и отметьте их соответствующим образом. –