本文介紹了在兩個MySQL表之間共享user_id值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用下面的中間件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值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,