我的 Mongo 项目 ID 没有通过 REST API 推送
My Mongo item ID isn't getting pushed through the REST API
所以我正在为 class 开发博客网站。我的项目是为博客站点创建一个 REST API。我可以通过 .ejs 视图从数据库中获取要显示的所有内容。我的问题是唯一没有被推动的是当我需要 blogID 来更新带有提交按钮的特定博客时。谁能看看我的代码并帮助我?我已经为此进行了 6 天的谷歌搜索和测试。谢谢。
<form method="put" action="/blogedit/<%= blogData.blogid %>" style="padding: 20px;">
<div class="form-group">
<label for="blogTitle" class="text-dark">
Blog Title
</label>
<input class="form-control" id="blogTitle" name="blogTitle" value="<%= blogData.blogTitle %>">
<label for="blogText" class="text-dark" style="width: 100%;">
Blog Text
</label>
<input class="form-control" id="blogText" name="blogText" value="<%= blogData.blogText %>"></textarea>
</div>
<input type="submit" class="btn btn-dark" value="Save">
</div>
</form>
以上是我要提交的表单的 html。
/*GET BLOG EDIT PAGE*/
module.exports.readOne = function (req, res) {
var requestOptions, path;
path = "/api/blog/" + req.params.blogid;
requestOptions = {
url: apiOptions.server + path,
method: "GET",
json: {}
};
request(
requestOptions,
function (err, response, body) {
if (err) {
console.log(err);
} else {
console.log(response.statusCode);
renderBlogEdit(req, res, body);
}
}
);
};
/*Render BLOG EDIT PAGE */
var renderBlogEdit = function (req, res, blogData) {
res.render('blogedit', {
title: 'Edit Blog',
pageHeader: {
title: 'Edit Blog'
},
blogData: blogData,
blogid: blogData._id,
blogTitle: blogData.blogTitle,
blogText: blogData.blogText
});
};
/*Blog Edit Post*/
module.exports.editPost = function (req, res) {
var requestOptions, path, postdata;
path = '/api/blog/' + req.params.blogid;
postdata = {
blogTitle: req.body.blogTitle,
blogText: req.body.blogText
};
requestOptions = {
url: apiOptions.server + path,
method: "PUT",
json: postdata
};
request(
requestOptions,
function (err, response, body) {
if (response.statusCode === 201) {
res.redirect('/bloglist');
} else {
_showError(req, res, response.statusCode);
}
}
);
};
这是我的 app_server 编辑博客的控制器,下面是我的 app_api 编辑博客的功能。
module.exports.readOne = function (req, res) {
console.log('Finding blogs', req.params);
if (req.params && req.params.blogid) {
blogSch
.findById(req.params.blogid)
.exec(function (err, blog) {
if (!blog) {
sendJsonResponse(res, 404, {
"message": "blogid not found"
});
return;
} else if (err) {
console.log(err);
sendJsonResponse(res, 404, err);
return;
}
console.log(blog);
sendJsonResponse(res, 200, blog);
});
} else {
console.log('No blogid in request');
sendJsonResponse(res, 404, {
"message": "No blogid in request"
});
}
};
module.exports.editOne = function (req, res) {
console.log("Updating Blog Entry : " + req.params.blogid);
console.log(req.body);
blogSch.findOneAndUpdate(
{ _id: req.params.blogid },
{ $set: { "blogTitle": req.body.blogTitle } },
{ $set: { "blogText": req.body.blogText } },
function (err, response) {
if (err) {
sendJsonResponse(res, 400, err);
} else {
sendJsonResponse(res, 201, response);
}
}
);
};
非常感谢任何帮助。为了更清楚地说明,当点击表单上的提交按钮时,我只收到 404 错误,表示找不到页面。非常感谢!
乍一看,您的表单 html 无效。 HTML5 表单只能有方法 'POST' 和 'GET'。由于 PUT 无效,该表单被视为 GET 请求,这就是给您 404 页面的原因。
更改您的代码以在 HTML5 表单和服务器上使用 POST。
所以我正在为 class 开发博客网站。我的项目是为博客站点创建一个 REST API。我可以通过 .ejs 视图从数据库中获取要显示的所有内容。我的问题是唯一没有被推动的是当我需要 blogID 来更新带有提交按钮的特定博客时。谁能看看我的代码并帮助我?我已经为此进行了 6 天的谷歌搜索和测试。谢谢。
<form method="put" action="/blogedit/<%= blogData.blogid %>" style="padding: 20px;">
<div class="form-group">
<label for="blogTitle" class="text-dark">
Blog Title
</label>
<input class="form-control" id="blogTitle" name="blogTitle" value="<%= blogData.blogTitle %>">
<label for="blogText" class="text-dark" style="width: 100%;">
Blog Text
</label>
<input class="form-control" id="blogText" name="blogText" value="<%= blogData.blogText %>"></textarea>
</div>
<input type="submit" class="btn btn-dark" value="Save">
</div>
</form>
以上是我要提交的表单的 html。
/*GET BLOG EDIT PAGE*/
module.exports.readOne = function (req, res) {
var requestOptions, path;
path = "/api/blog/" + req.params.blogid;
requestOptions = {
url: apiOptions.server + path,
method: "GET",
json: {}
};
request(
requestOptions,
function (err, response, body) {
if (err) {
console.log(err);
} else {
console.log(response.statusCode);
renderBlogEdit(req, res, body);
}
}
);
};
/*Render BLOG EDIT PAGE */
var renderBlogEdit = function (req, res, blogData) {
res.render('blogedit', {
title: 'Edit Blog',
pageHeader: {
title: 'Edit Blog'
},
blogData: blogData,
blogid: blogData._id,
blogTitle: blogData.blogTitle,
blogText: blogData.blogText
});
};
/*Blog Edit Post*/
module.exports.editPost = function (req, res) {
var requestOptions, path, postdata;
path = '/api/blog/' + req.params.blogid;
postdata = {
blogTitle: req.body.blogTitle,
blogText: req.body.blogText
};
requestOptions = {
url: apiOptions.server + path,
method: "PUT",
json: postdata
};
request(
requestOptions,
function (err, response, body) {
if (response.statusCode === 201) {
res.redirect('/bloglist');
} else {
_showError(req, res, response.statusCode);
}
}
);
};
这是我的 app_server 编辑博客的控制器,下面是我的 app_api 编辑博客的功能。
module.exports.readOne = function (req, res) {
console.log('Finding blogs', req.params);
if (req.params && req.params.blogid) {
blogSch
.findById(req.params.blogid)
.exec(function (err, blog) {
if (!blog) {
sendJsonResponse(res, 404, {
"message": "blogid not found"
});
return;
} else if (err) {
console.log(err);
sendJsonResponse(res, 404, err);
return;
}
console.log(blog);
sendJsonResponse(res, 200, blog);
});
} else {
console.log('No blogid in request');
sendJsonResponse(res, 404, {
"message": "No blogid in request"
});
}
};
module.exports.editOne = function (req, res) {
console.log("Updating Blog Entry : " + req.params.blogid);
console.log(req.body);
blogSch.findOneAndUpdate(
{ _id: req.params.blogid },
{ $set: { "blogTitle": req.body.blogTitle } },
{ $set: { "blogText": req.body.blogText } },
function (err, response) {
if (err) {
sendJsonResponse(res, 400, err);
} else {
sendJsonResponse(res, 201, response);
}
}
);
};
非常感谢任何帮助。为了更清楚地说明,当点击表单上的提交按钮时,我只收到 404 错误,表示找不到页面。非常感谢!
乍一看,您的表单 html 无效。 HTML5 表单只能有方法 'POST' 和 'GET'。由于 PUT 无效,该表单被视为 GET 请求,这就是给您 404 页面的原因。
更改您的代码以在 HTML5 表单和服务器上使用 POST。