在两个MySQL表之间共享user_id值

本教程将介绍在两个MySQL表之间共享user_id值的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

在两个MySQL表之间共享user_id值 教程 第1张

问题描述

我正在使用下面的中间件AuthController.js。中间件是CRUD应用程序的一部分。我创建了exports.create,当被请求时,它将从CRUD表单收集名字和姓氏。收集MySQLINSERT查询后,将在MySQLuser表上插入数据,该表运行正常。

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

当我请求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:
', rows);

});

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

推荐答案

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:
', rows);
});
...

我希望这就是您要找的。

编辑您还可以:

...
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:
', rows);
});
...

好了关于在两个MySQL表之间共享user_id值的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。