【问题标题】:Sharing user_id value between two MySql table在两个 MySql 表之间共享 user_id 值
【发布时间】:2021-12-05 00:58:32
【问题描述】:

我正在开发下面的中间件 AuthController.js。中间件是 CRUD 应用程序的一部分。我创建了exports.create,它会在请求时从 CRUD 表单中收集名字和姓氏。一旦收集到 MySql INSERT 查询,将在 MySql user 表中插入数据,该表工作正常。

我无法实现并且需要帮助的是,除了我想插入的名字和姓氏信息之外,变量{ user_id: decoded.id }decoded.id 是一个变量,它从另一个 MySql 表中获取 user_id 值叫login

当我请求export.create 时,终端上显示以下错误:

(node:18780) UnhandledPromiseRejectionWarning: TypeError: argument callback must be a function when provided

基本上我希望将login 表中user_id 列下的值转移到user 表上的user_id 列。感谢您的帮助。

exports.create = async (req, res, next) => {
    if (req.cookies.jwt) {
        try {
            //1)verify the token
            var decoded = await promisify(jwt.verify)(req.cookies.jwt,
                process.env.JWT_SECRET
            );
            
            // console.log(decoded);
            const { first_name, last_name } = req.body;

            connection.query('INSERT INTO user SET first_name = ?,last_name = ?', { user_id: decoded.id }, [first_name, last_name,], (err, rows) => {
                if (!err) {
                    res.render('add-crew', { alert: 'Crew member added succesfully!' });
                } else {
                    console.log(err);
                }
                console.log('The data from user table:\n', rows);

            });

        } catch (error) {
            console.log(error);
            return next();
        }
    }
};

【问题讨论】:

    标签: javascript mysql node.js express crud


    【解决方案1】:

    connection.query 函数接受两到三个参数:SQL 语句、(值)和回调。这里,函数接受了四个参数,所以它认为[first_name, last_name,] 是回调。

    你可以做的是:

    ...
    connection.query('INSERT INTO user SET user_id = ?, first_name = ?,last_name = ?', [decoded.id, first_name, last_name,], (err, rows) => {
        if (!err) {
            res.render('add-crew', { alert: 'Crew member added succesfully!' });
        } else {
            console.log(err);
        }
        console.log('The data from user table:\n', rows);
    });
    ...
    

    我希望这就是你要找的。​​p>

    编辑你也可以这样做:

    ...
    connection.query('INSERT INTO user SET ?', {user_id: decoded.id, first_name: first_name, last_name: last_name}, (err, rows) => {
        if (!err) {
            res.render('add-crew', { alert: 'Crew member added succesfully!' });
        } else {
            console.log(err);
        }
        console.log('The data from user table:\n', rows);
    });
    ...
    

    【讨论】:

    • 是的,非常感谢,这正是我想要的。它工作得很好,我选择了第二个选项。我现在感觉很迟钝。我应该多看一下 MySql 文档……非常感谢!
    • @CesareMannino 没问题
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2012-09-04
    相关资源
    最近更新 更多