Node.js RESTful api。 发布后回复

学习Node.js并尝试创build其他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" }); } }); }); }; 

问题:如何在成功创build时返回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"}); 

为了在响应中包含待办事项,您必须进行另一个数据库调用。 而不是复制获取所有todo项目的代码,您可能需要创build一个单独的函数来获取todo项目而不响应客户端。

 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 }); }); } }); }); }; 

不过,不要忘了添加error handling。 =)

此外,检查承诺(例如蓝鸟 ),以避免callback地狱。