在两个 MySql table 之间共享 user_id 值
Sharing user_id value between two MySql table
我正在处理下面的中间件 AuthController.js。中间件是 CRUD 应用程序的一部分。我创建了 exports.create
,它会在请求时从 CRUD 表单中收集名字和姓氏。收集到 MySql INSERT
查询后,将在 MySql user
table 上插入数据,工作正常。
我无法实现并且需要帮助的是,除了名字和姓氏信息之外,我还想插入变量 { user_id: decoded.id }
,decoded.id
是一个采用 user_id
来自另一个名为 login
.
的 MySql table 的值
当我请求 export.create
时,终端上显示以下错误:
(node:18780) UnhandledPromiseRejectionWarning: TypeError: argument callback must be a function when provided
基本上我希望 login
table user_id
列下的值转移到 user
table 上的 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();
}
}
};
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);
});
...
希望这就是您要找的。
编辑您还可以:
...
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);
});
...
我正在处理下面的中间件 AuthController.js。中间件是 CRUD 应用程序的一部分。我创建了 exports.create
,它会在请求时从 CRUD 表单中收集名字和姓氏。收集到 MySql INSERT
查询后,将在 MySql user
table 上插入数据,工作正常。
我无法实现并且需要帮助的是,除了名字和姓氏信息之外,我还想插入变量 { user_id: decoded.id }
,decoded.id
是一个采用 user_id
来自另一个名为 login
.
当我请求 export.create
时,终端上显示以下错误:
(node:18780) UnhandledPromiseRejectionWarning: TypeError: argument callback must be a function when provided
基本上我希望 login
table user_id
列下的值转移到 user
table 上的 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();
}
}
};
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);
});
...
希望这就是您要找的。
编辑您还可以:
...
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);
});
...