javascript - Node.js RESTful API。发帖后回复

标签 javascript node.js

学习 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/

相关文章:

嵌套箭头函数的Javascript内存含义

javascript - 在嵌套元素生成javascript时出错

javascript - 如何将脚本存储在字符串中?

javascript - 使用 sinon、nyc 和 ava 测试 js/esm 项目 - 尽管有控制台日志,但在控制台上进行 spy 测试仍失败

javascript - 如何在 Meteor 中使用嵌入文档

debugging - 如何以编程方式检测nodejs中的 Debug模式?

iphone - 如何正确地将文件从 iPhone 发布到使用 node-formidable 的 node.js 服务器?

javascript - 如何从服务器端更新 jQuery DropdownChecklist?

javascript - 是否可以将 animate 与 jQuery 的属性一起使用?

javascript - Node-Firebird 无效的事务句柄