学习 Node.js 并尝试创建 rest api。 现在有这样的服务:
this.get = function(res) {
connection.acquire(function(err, con) {
con.query('select * from todo_list', function(err, result) {
con.release();
res.send(result);
});
});
};
this.create = function(todo, res) {
connection.acquire(function(err, con) {
con.query('insert into todo_list set ?', todo, function(err, result) {
con.release();
if (err) {
res.send({
status: 1,
message: "Todo creation failed"
});
} else {
res.send({
status: 0,
message: "Todo created successfully"
});
}
});
});
};
问题:创建成功如何返回json,例如:
{status: 0, message: ... , todos: [{id:1, name: 'Todo', date:...},{id:2, name: 'Todo', date:...}]}
最佳答案
使用res.json() :
res.json({status: 0, message: "Todo created successfully"});
为了在响应中包含待办事项,您必须进行另一个数据库调用。与其复制获取所有待办事项的代码,不如创建一个单独的函数来获取待办事项而不响应客户端。
this.getAllItems = function(callback) {
connection.acquire(function(err, con) {
con.query('select * from todo_list', function(err, result) {
con.release();
callback(result);
});
});
}
this.get = function (res) {
this.getAllItems(function(result) {
res.json(result);
});
};
this.create = function (todo, res) {
var self = this;
connection.acquire(function(err, con){
con.query('insert into todo_list set ?', todo, function(err, result){
con.release();
if(err) {
res.json({status: 1, message: "Todo creation failed"});
} else {
self.getAllItems(function(items) {
res.json({
status: 0,
message: "Todo created successfully",
todos: items
});
});
}
});
});
};
不过不要忘记添加错误处理。 =)
此外,检查 promise (例如 Bluebird)以避免回调 hell 。
关于javascript - Node.js RESTful API。发帖后回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37374504/