我正在尝试为Slack制作一个机器人,该机器人可以处理来自办公室的维护请求,并使用nodejs将它们存储在数据库中。
前端工作正常,并且bot正确记录了请求,我编写了以下代码以将数据库显示到一个简单的网页:
exports.serveHTML = function serveHTML() {
var http = require('http');
http.createServer(function (req, res) {
var html = buildHtml(req);
res.writeHead(200, {
'Content-Type' : 'text/html',
'Content-Length' : html.length,
'Expires' : new Date().toUTCString()
});
res.end(html);
}).listen(8080);
function buildHtml(req) {
var header = '<html><head><title>Maintenance Log</title></head><body><h1>Maintenance Log</h1><table border="1"><tr><th>Problem Description</th><th>User</th> <th>ID</th><th>Date</th><th>Status</th> </tr>';
var body = '';
for (var i = 0; i < problemList.length; i++) {
body+="<tr>";
body+="<td>" + problemList[i].description + "</td>";
body+="<td>" + problemList[i].complainer + "</td>";
body+="<td>" + problemList[i].id + "</td>";
body+="<td>" + problemList[i].dateAndTime + "</td>";
body+="<td>" + problemList[i].status + "</td>";
body+="</tr>";
}
return '<!DOCTYPE html>'
+ header + '</header><body>' + body + '</body></html>';
};
};
这仅用于显示项目,但我想在每个项目上包括一个单选按钮,以便人力资源团队可以更改项目的状态。
我被困在如何获得此更改以反映在数据库上。
所以我的问题是:如何从该页面将信息传递回数据库?
最佳答案
好吧,这取决于您使用的数据库类型。如果您使用的是MongoDb,那么在那儿获取数据将非常容易。
我建议您调查一下mongoose,这可以轻松地从MongoDb http://mongoosejs.com/保存和检索数据
您也可以在页面上创建一个表单,以便他们单击提交时会将其发送到您的Node服务器。
<form action="/submit" method="get">
Description : <input type="text" name="description"><br>
Status: <input type="text" name="status"><br>
<input type="submit" value="Submit">
</form>
如果您在后端使用Express,则可以轻松获取数据,然后将其保存到MongoDb。
var Ticket = mongoose.model('Ticket', { status: String, description: String });
app.post('/submit', function(req, res) {
var ticketStatus = req.body.status;
var ticketDescription = req.body.description;
var ticket= new Ticket({ status: ticketStatus , description: ticketDescription });
ticket.save(function (err) {
if (err) // ...
console.log('saved');
});
});