我正在處理下面的中間件 AuthController.js。中間件是 CRUD 應用程式的一部分。我創建了exports.create它,在請求時將從 CRUD 表單中收集名字和姓氏。一旦收集了 MySqlINSERT查詢,將在user作業正常的 MySql表上插入資料。
我無法實作并且需要幫助的是,連同名字和姓氏資訊,我還想插入變數 { user_id: decoded.id },decoded.id是一個變數,它user_id從另一個名為 的 MySql 表中獲取值login。
當我請求export.create終端上顯示以下錯誤時:
(node:18780) UnhandledPromiseRejectionWarning: TypeError: argument callback must be a function when provided
基本上我希望user_id將login表中列下的值傳輸到表上的user_id列user。感謝您的幫助。
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();
}
}
};
uj5u.com熱心網友回復:
該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);
});
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322875.html
標籤:javascript mysql 节点.js 表达 粗渣
