javascript - 在一个函数中运行 2 个查询的正确 RESTful API 实践?

标签 javascript mysql node.js rest

所以我正在使用nodejs 为mySQL 开发一个API。尝试创建一个插入两个不同表的函数。

INSERT INTO account_details (username, first_name, last_name, gender, mobile_number, postal_code, email, activated) VALUES (?, ?, ?, ?, ?, ?, ?, ?)

INSERT INTO passwords (username, password) VALUES (?, ?)

正确的做法是什么?

现在我有了这个,它工作得很好,除了它使我的nodejs服务器崩溃,给出下面的错误。

    addUser(request, respond) {
        var userObject = new User(request.body.username, request.body.password, request.body.first_name, request.body.last_name, request.body.gender, request.body.mobile_number, request.body.postal_code, request.body.email, request.body.activated, null, null);
        var sql = "INSERT INTO account_details (username, first_name, last_name, gender, mobile_number, postal_code, email, activated) " +
                    "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
        var password = "INSERT INTO passwords (username, password) VALUES (?, ?)";

        var values = [userObject.getUsername(), userObject.getFirstName(), userObject.getLastName(), userObject.getGender(),
                    userObject.getMobileNumber(), userObject.getPostalCode(), userObject.getEmail(), userObject.getActivated()];

        var passvalues = [userObject.getUsername(), userObject.getPassword()];

        db.query(sql, values, function (error, result) {
            if (error) {
                throw error;
            }
            else {
                respond.json(result);
            }
        });
        db.query(password, passvalues, function (error, result) {
            if (error) {
                throw error;
            }
            else {
                respond.json(result);
            }
        });
    }
Error: Can't set headers after they are sent.

任何人都可以帮助正确的语法吗?提前致谢。

最佳答案

您可以按如下方式更改代码:

addUser(request, respond) {
    var userObject = new User(request.body.username, request.body.password, request.body.first_name, request.body.last_name, request.body.gender, request.body.mobile_number, request.body.postal_code, request.body.email, request.body.activated, null, null);
    var sql = "INSERT INTO account_details (username, first_name, last_name, gender, mobile_number, postal_code, email, activated) " +
                "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
    var password = "INSERT INTO passwords (username, password) VALUES (?, ?)";

    var values = [userObject.getUsername(), userObject.getFirstName(), userObject.getLastName(), userObject.getGender(),
                userObject.getMobileNumber(), userObject.getPostalCode(), userObject.getEmail(), userObject.getActivated()];

    var passvalues = [userObject.getUsername(), userObject.getPassword()];

    db.query(sql, values, function (error, result) {
        if (error) {
            throw error;
        }
        else {
            db.query(password, passvalues, function (error, result) {
              if (error) {
                throw error;
              }
              else {
                respond.json(result);
              }
            });
        }
    });

}

关于javascript - 在一个函数中运行 2 个查询的正确 RESTful API 实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59607784/

相关文章:

javascript - 如何检测 js 文件在运行时是否被缩小 (Node.js)

javascript - 按字母在 Canvas 上绘制文本,以控制各个字母的 Alpha,同时与中心对齐

javascript - 返回数组和子节点

javascript - 如何解决 jquery-mobile 的页面导航问题

Python:使用MySql数据库的Django框架

javascript - Node.js Forever.js 正常运行时间停止

javascript - 通过ejs文件中的javascript访问JSON

javascript - 当元素设置为不显示时使用classList

mysql - 在 RDBMS 中存储 uni/bi/trigrams ngrams 的正确方法?

php - 在 MySql/PHP/CodeIgniter 上负载平衡多读数据库